2024-04-17 23:47:16 发布
网友
我是新来的,不知道为什么这是不工作。我也找过类似的问题,但似乎帮不了我。方程为Sn=-7*Sn-1-1*Sn-2,初始值为S0=0和S1=1
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
你把-7*s(n-1)和s(-7*(n-1))搞混了:
-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方向减小,因此递归将结束。你知道吗
n
0
1
对于5作为起始值,它计算s_recursive的n=:
5
s_recursive
n=
5 4 3 2 1 0 1 2 1 0 3 2 1 0 1
结果是2255。你知道吗
2255
注意s_recursive(2)计算了3次。对于较大的n,最好保留计算结果的dict。你知道吗
s_recursive(2)
dict
在代码中,递归调用-7*(n-1)是个问题。以n=7作为起始值,计算s_recursive的n:
-7*(n-1)
n=7
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 ...
解决方案
你把
-7*s(n-1)
和s(-7*(n-1))
搞混了:解释
无论(正)
n
是什么,递归参数都会朝0
和1
方向减小,因此递归将结束。你知道吗对于
5
作为起始值,它计算s_recursive
的n=
:结果是
2255
。你知道吗注意
s_recursive(2)
计算了3次。对于较大的n
,最好保留计算结果的dict
。你知道吗你的代码
在代码中,递归调用
-7*(n-1)
是个问题。以n=7
作为起始值,计算s_recursive
的n
:相关问题 更多 >
编程相关推荐