首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Fibonacci数-递归解决思路

2013-01-11 
Fibonacci数-递归下面是我写的关于求斐波那契数的递归程序:#include stdio.h#include math.hint Fibon

Fibonacci数-递归
下面是我写的关于求斐波那契数的递归程序:

#include <stdio.h>
#include <math.h>

int Fibonacci(int n){
if(n==1){
return 1;
}
else if(n==2){
return 1;
}
else{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}

int main(){
int n=50000000;
int re=Fibonacci(n);
printf("%d\n",re);
return 0;
}

不明白为啥当n取值不大的时候,可以正确运行出来,但是当n很大,例如算例中的 50000000,程序一运行就出错呢?
[解决办法]
哥们。 现在 的int 一般都是  4个字节,最大表示值为 :  4^31。  大概20 多亿吧··貌似。  
所以 int 取50000000  不会溢出。楼上的回答有问题。

溢出的不是 int 而是 因为 递归的层次 太多了,递归函数的执行是在栈里面的,栈空间本来就小,根本装不下那么多 的递归,所以栈溢出了。

热点排行