【发布时间】:2015-07-03 07:05:06
【问题描述】:
我对 python 还很陌生,我试图用它来制作一个程序来计算 Stern-Brocot 序列的第 n 项(你可以查一下,这就是我的函数被调用的原因SBSeq)。由于某种原因,它不起作用,并且出现错误,如下所示:
File "C:/Python27/Factorials.py", line 6, in SBSeq
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
最终会变成这样:
File "C:/Python27/Factorials.py", line 5, in SBSeq
if n == 1: return 1
RuntimeError: maximum recursion depth exceeded in cmp
这是原始代码。
import math
from math import ceil
def SBSeq(n):
if n == 1: return 1
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
任何帮助将不胜感激!
【问题讨论】:
-
下面问题的OP和你有同样的问题。请检查:stackoverflow.com/questions/24997970/…
-
您的代码甚至无法编译。请发布一些有效的代码。
-
我猜函数是用负输入调用的,对于负输入没有提前退出条件,
ceil(n/2)-1看起来很可疑。注意0*some_function()不会短路到0。 -
@Borja 我确实检查过,它没有和我一样的问题。我正在生成序列中的特定术语,而他/她正在生成列表。
-
@juanchopanza 它确实可以编译(好吧,无论如何,在 Python 2.7.9 中)。我没有把版本放在......对不起。
标签: python math modular-arithmetic ceil