函数f由规则定义
写一个函数f(n),f
通过迭代过程计算
我写了这个.并且仍然没有做对.请告知如何解决它.
def f(n): if (n<3): return n else: for x in range (n): a = f(n-1) + 2*f(n-2) + 3*f(n-3) return (a)
Willem Van O.. 6
只需使用内存缓存:
def f(n): if n < 3: return n a,b,c = 0,1,2 for i in range(n-2): a,b,c = b,c,c+2*b+3*a return c
在这个函数中我们a
用来表示f(n-3),b
表示f(n-2),c
对于f(n-1),在每个迭代步骤,我们计算f(n),因此我们移位:a
变成b
,b
变成c
并c
获得新的价值.我们这样做直到达到要求为止n
.
所以最初我们将计算f(3).在这种情况下,a
是F(0)= 0,b
是F(1)= 1,和c
是F(2)= 2.在迭代之后,a
取f(1)= 1,b
取f(2)= 2,c
取f(3)= f(2)+ 2×f(1)+ 3×f(0)= 5,你一直这样做,直到c
有权利n
.
这将更快地工作,因为在递归变体中,您需要f(n-2)
并且f(n-1)
,但是f(n-1)
将在他的路上调用f(n-2)
因此引入重复的工作.
只需使用内存缓存:
def f(n): if n < 3: return n a,b,c = 0,1,2 for i in range(n-2): a,b,c = b,c,c+2*b+3*a return c
在这个函数中我们a
用来表示f(n-3),b
表示f(n-2),c
对于f(n-1),在每个迭代步骤,我们计算f(n),因此我们移位:a
变成b
,b
变成c
并c
获得新的价值.我们这样做直到达到要求为止n
.
所以最初我们将计算f(3).在这种情况下,a
是F(0)= 0,b
是F(1)= 1,和c
是F(2)= 2.在迭代之后,a
取f(1)= 1,b
取f(2)= 2,c
取f(3)= f(2)+ 2×f(1)+ 3×f(0)= 5,你一直这样做,直到c
有权利n
.
这将更快地工作,因为在递归变体中,您需要f(n-2)
并且f(n-1)
,但是f(n-1)
将在他的路上调用f(n-2)
因此引入重复的工作.