我想使用 O(1) 空间编写自下而上的斐波那契数列。我的问题是 python 的递归堆栈限制了我测试大量数字。有人可以为我所拥有的提供替代或优化吗?这是我的代码:
def fib_in_place(n):
def fibo(f2, f1, i):
if i < 1:
return f2
else:
return fibo(f1, f2+f1, i -1)
return fibo(0, 1, n)
Run Code Online (Sandbox Code Playgroud) 我正在处理递归“x n+1 = (13/3)x n - (4/3)x n-1 ”。我正在尝试编写一个 Python 脚本来打印 x n的前 50 个值以及给定值 x 0 = 1 和 x 1 = 1/3。这就是我的代码目前的样子:
import math
def printRecurrence():
x = [0]*51 #initialize list of x values
x[0] = 1
x[1] = 1/3
for i in range(1, 51):
x[i+1] = (13/3)*x[i] - (4/3)*x[i-1]
print(x[i])
Run Code Online (Sandbox Code Playgroud)
我收到的输出是:
0.3333333333333333
0.11111111111111094
0.03703703703703626
0.012345679012342514
0.004115226337435884
0.0013717421124321456
0.00045724737062478524
0.00015241578946454185
5.0805260179967644e-05
1.6935074827137338e-05
5.644977344304949e-06
1.8814687224716613e-06
6.263946716372672e-07
2.0575194713260943e-07
5.63988753916179e-08
-2.994080281313502e-08
-2.049419793790756e-07
-8.481608402251475e-07
-3.402107668470205e-06
-1.361158544307069e-05
-5.444739336201271e-05
-0.00021778992397796082
-0.0008711598127551465
-0.0034846392899683535
-0.013938557172856001 …Run Code Online (Sandbox Code Playgroud)