我是新手,并且不确定为什么这不起作用。我找了类似的问题,但它似乎没有帮助我。等式为Sn=-7*Sn-1-1*Sn-2
,初始值为S0=0
和S1=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
答案 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
是什么,递归参数将朝0
和1
减少,因此递归将结束。
以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
...