永发信息网

来帮忙解释下,递归函数给数组赋值,为什么到这里就不出来结果了??

答案:4  悬赏:20  手机版
解决时间 2021-03-18 08:50
  • 提问者网友:你挡着我发光了
  • 2021-03-17 17:52
#include
int fibonacci(int);
int fibonacci(int n)
{
if(n==1||n==2)
return 1;
else
return (fibonacci(n-1)+fibonacci(n-2));
}
void main(void)
{
int n,i,a,arr[1000];
printf("请输入一个整数\n");
scanf("%d",&n);
printf("fibonacci(%d)输出值为:%d\n",n,fibonacci(n));

printf("输出的 斐波那契数列 为:\n"); //执行到这一步就没有反应了。
for(i=0;i {
arr[i]=fibonacci(i);
printf("%d\n",arr[i]);
}
}

程序运行结果 :

请输入一个整数
8
fibonacci(8)输出值为:21
输出的 斐波那契数列 为:
请按任意键继续. . .

按道理,应该会显示数组的值啊,为什么后面就没有显示了呢?
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-03-17 18:44
void main(void)
{
int n,i,a,arr[1000];
printf("请输入一个整数\n");
scanf("%d",&n);
printf("fibonacci(%d)输出值为:%d\n",n,fibonacci(n));

printf("输出的 斐波那契数列 为:\n"); //执行到这一步就没有反应了。
for(i=0;i {
arr[i]=fibonacci(i+1);//这里要使用fibonacci(i+1),因为i=0时,你的递归函数就无法执行咯
printf("%d\n",arr[i]);
}
}
全部回答
  • 1楼网友:人间朝暮
  • 2021-03-17 21:40
没有判断0的情况。fibonacci(0)会无限循环。
  • 2楼网友:风格不统一
  • 2021-03-17 20:41
把for循环改成这样 for(i=0;i
  • 3楼网友:我住北渡口
  • 2021-03-17 19:29
你好! 把for循环改成这样 for(i=0;i
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯