gpt4 book ai didi

algorithm - 如果删除 "LINE 3",fib(n) 需要多少次额外的函数调用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:08 26 4
gpt4 key购买 nike

我刚在面试中遇到这个问题,不知道如何计算答案。
如果删除“LINE 3”,fib(n) 需要多少次额外的函数调用?答案应该是关于 n 的术语。

int fib(int n) {
if(n == 0) return 0;
if(n == 1) return 1;
if(n == 2) return 1; //LINE 3 HERE <---

return fib(n - 1) + fib(n - 2);
}

最佳答案

可以很容易地计算出来。旧代码:

TO(0)=TO(1)=TO(2)=1
TO(n)=TO(n-1)+TO(n+2)+1

新代码:

TN(0)=TN(1)=1
TN(n)=TN(n-1)+TN(n-2)+1

简单地通过减去这两个来计算差值:

D(0)=D(1)=0
D(2)=3-1=2
D(n)=TN(n)-TO(n)=TN(n-1)+TN(n-2)+1-(TO(n-1)+TO(n+2)+1)
=(TN(n-1)-TO(n-1))+(TN(n-2)-TN(n-2))+(1-1)
=D(n-1)+D(n-2)

这意味着差异是以 0,0,2 开头的斐波那契数列。也可以为它计算一个封闭形式的表达式。

关于algorithm - 如果删除 "LINE 3",fib(n) 需要多少次额外的函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com