简单的c++程序
#include <iostream>
using namespace std;
int fibonacci(int a){
if(a==1||a==2)
{
return 1;
}
else
return (fibonacci(a-1)+fibonacci(a-2));
}
int main()
{
int m;
cin>>m;
int fib=fibonacci(m);
cout<<fib;
return 0;
}
我写的斐波那契数列的函数 ,执行可以通过,为什么分步调试是永远也跳不出函数
[解决办法]
可以执行完。耐心点吧
[解决办法]
递归调用次数很多,计算次数也很多,即使你输入一个小的参数,也会调用很多次很多次,所以你就以为也跳不出来了吧。你这样写效率会非常低的
[解决办法]
有一点问题,要注意细节,请看下面代码:
- C/C++ code
#include <iostream>using namespace std;int fibonacci(int a){ if (a < 0) // 防止输入负数 return 0 ; else if(a == 0 || a == 1) return 1 ; else return (fibonacci (a - 1) + fibonacci (a - 2)) ;}int main(){ int m ; cin >> m ; cout << fibonacci (m) << endl ; return EXIT_SUCCESS ;}
[解决办法]
因为你在使用递归,所以你没有注意到细节问题。你可以转到汇编语言处,你会发现在调用栈