Algorithm 计算fibonnaci(7)时进行了多少次fibonacci(2)调用?
当您运行Fib7时,会有多少个电话呼叫Fib2 算法定义如下:Algorithm 计算fibonnaci(7)时进行了多少次fibonacci(2)调用?,algorithm,recursion,fibonacci,Algorithm,Recursion,Fibonacci,当您运行Fib7时,会有多少个电话呼叫Fib2 算法定义如下: Algorithm Fib(n): if n = 0 or n = 1 then f = n else f = Fib(n-1) + Fib(n - 2) endif return f 我认为答案是7。下面是您的伪代码在Python中的一个实现: def Fib(n): if n == 0 or n == 1: f = n else:
Algorithm Fib(n):
if n = 0 or n = 1
then f = n
else f = Fib(n-1) + Fib(n - 2)
endif
return f
我认为答案是7。下面是您的伪代码在Python中的一个实现:
def Fib(n):
if n == 0 or n == 1:
f = n
else:
f = Fib(n-1) + Fib(n - 2)
return f
print Fib(7)
现在,我添加以下行:
if n == 2:
print 'Fib(2)'
结果是:
Fib(2)
Fib(2)
Fib(2)
Fib(2)
Fib(2)
Fib(2)
Fib(2)
Fib(2)
13
这意味着Fib2被调用了8次。为了好玩,在Python中: def fibn: def fib2n: count[n]=count.getn,0+1 如果n<2: 返回n 其他: 返回fib2n-1+fib2n-2 计数={} 返回fib2n[c,sortedcount中c的计数[c] 打印纤维7 印刷品 => 13, [0, 8, 1, 13, 2, 8, 3, 5, 4, 3, 5, 2, 6, 1, 7, 1] === ======
因此fib7的结果是13,fib2被调用了8次。让fn是计算Fibn时调用fib2的次数 然后,f2=1,f3=1,对于k>3,fk=fk-1+fk-2 这与Fib本身是相同的递归关系,得到的解是fk=Fibk-1。对于k=7的特殊情况,可以得到解Fib6=8
这概括了:计算Fibn时调用Fibm的次数为Fibn-m+1,假设n>=m。请查看并查看主绘图树fib4所做的工作。@NolanHodge:我不确定我的评论有什么可报告的内容。你的问题有一个有趣的性质,答案总是另一个斐波那契数。为什么不自己数一数呢?