超过递归限制

时间:2017-01-20 11:42:12

标签: python recursive-query

我是新手,并且不确定为什么这不起作用。我找了类似的问题,但它似乎没有帮助我。等式为Sn=-7*Sn-1-1*Sn-2,初始值为S0=0S1=1

def s_recursive(n):
    if n==0:
        a=0
        return a
    elif n==1:
        a=1
        return a
    else:
        a=(s_recursive(-7*(n-1))-s_recursive(-1*(n-2)))
        return a

1 个答案:

答案 0 :(得分:2)

解决方案

您将-7*s(n-1)s(-7*(n-1))混淆:

def s_recursive(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    else:
        return -7*s_recursive(n-1)-s_recursive(n-2)

print s_recursive(7)
#=> 105937
print s_recursive(8)
#=> -726103

解释

无论(正)n是什么,递归参数将朝01减少,因此递归将结束。

5作为起始值,为s_recursive计算n=

5
4
3
2
1
0
1
2
1
0
3
2
1
0
1

,结果为2255

请注意,s_recursive(2)计算3次。使用较大的n时,最好保留dict个计算结果。

您的代码

在您的代码中,递归调用-7*(n-1)是问题所在。以n=7为起始值,为s_recursive计算n

7
-42
301
-2100
14707
-102942
720601
-5044200
35309407
-247165842
1730160901
-12111126300
84777884107
-593445188742
4154116321201
-29078814248400
203551699738807
-1424861898171642
9974033287201501
-69818233010410500
488727631072873507
-3421093417510114542
23947653922570801801
-167633577457995612600
1173435042205969288207
...