找回密码
 欢迎注册
楼主: zeroieme

[原创] 被Mathematica的bug气失眠了,求确认

[复制链接]
发表于 2012-7-4 10:01:05 | 显示全部楼层
如果我是M软件,我也会这么输出的,这样貌似没有什么不对的呀,赫赫。
不过,请大家测试下面的代码:
  1. $RecursionLimit = Infinity;
  2. f[n_] := If[n == 1, 1, 1 + f[n - 1]];
  3. f[10000] // Timing
  4. f[10]
复制代码
上面的代码在我这里运行结果是正常的,但是,当我把10000变成100000时,就不大正常了,赫赫。在大家那里是什么现象呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-4 10:53:10 | 显示全部楼层
11# zgg___
我试了一下,运行 f[37388]还行, 而37389次,kernel就崩掉了.
这也是合情合理的,总不能让front end有可能一直在没有结局的死等吧,   
当然了,真正的好处还是扼杀某些用户的恶意于摇篮之中.
就像linux下的 gets 和 fgets之区别一样(历史上好像因此而出现了某种病毒)
================
其实Mathematica还算不错的了.
要是用PARI/Gp, 迭代10000次就罢工了:
顺便 show一下PARI的匿名函数的新语法功能

hello00.jpg

我试图增加它的栈空间,查了文档,却说:
*** deep recursion
There is no way to increase the recursion limit (which may be different on your machine) from
withingp. To increase it before launching gp, you can use ulimitorlimit, depending on your
shell, and raise the process available stack space (increasestacksize).
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-4 10:58:47 | 显示全部楼层
10# zeroieme
根据我前面的解释,当然都是 {True, True, True, True, True} 了

我们用工具,有时候很有必要让我们的思维屈尊于工具所特有的方式.
用Mathematica,也要以Mathematica官方所宣称的那样think Mathematicaly
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-4 11:16:07 | 显示全部楼层
To wayne 12:
的确是崩溃掉了,赫赫。
只是这个崩溃进行的无声无息,我一开始并没有意识到,所以就稍稍陷入了一些麻烦了。赫赫。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-4 11:18:53 | 显示全部楼层
14# zgg___
嗯,这个是软件设计的不太人性化.
按道理,应该提前告知用户, 然后再自个儿崩掉
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-29 00:29 , Processed in 0.060622 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表