作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在计算斐波那契数列时,偶然发现了这段代码,我经常看到它:
int Fibonacci (int x)
{
if (x<=1) {
return 1;
}
return Fibonacci (x-1)+Fibonacci (x-2);
}
我不明白它是如何工作的,尤其是最后的返回部分:它是否再次调用斐波那契函数?有人可以指导我完成此功能吗?
最佳答案
是的,该函数调用自身。例如,
Fibonacci(4)
= Fibonacci(3) + Fibonacci(2)
= (Fibonacci(2) + Fibonacci(1)) + (Fibonacci(1) + Fibonacci(0))
= ((Fibonacci(1) + Fibonacci(0)) + 1) + (1 + 1)
= ((1 + 1) + 1) + 2
= (2 + 1) + 2
= 3 + 2
= 5
请注意,Fibonacci 函数在这里被调用了 9 次。一般来说,朴素的递归斐波那契函数有 exponential running time ,这通常是一件坏事。
关于c++ - 斐波那契函数题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2751458/
我是一名优秀的程序员,十分优秀!