Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 计算fibonnaci(7)时进行了多少次fibonacci(2)调用?_Algorithm_Recursion_Fibonacci - Fatal编程技术网

Algorithm 计算fibonnaci(7)时进行了多少次fibonacci(2)调用?

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:

当您运行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:
        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:我不确定我的评论有什么可报告的内容。你的问题有一个有趣的性质,答案总是另一个斐波那契数。为什么不自己数一数呢?