鱼C论坛

 找回密码
 立即注册
查看: 911|回复: 7

[已解决]求助,一个简单的C语言for循环问题

[复制链接]
发表于 2021-1-28 20:21:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用数组求小于某个数的前n项斐波那契数列,本来是个很简单的问题,我的代码如下
# include <stdio.h>
#define MAX 128
int main()
{
    int a[MAX]={0};
    a[0]=1;
    a[1]=2;
    int i;
    for(i=2;a[i]<4000;i++)
    {
        a[i]=a[i-1]+a[i-2];
        printf("a[%d]=%d\n",i,a[i]);
    }
      return 0;
}
然而编译结果是这样。。。 问题.png for一直循环下去直到值溢出,有大佬知道这是为什么吗
最佳答案
2021-1-28 20:48:33
# include <stdio.h>
#define MAX 128
int main()
{
        //数组只定义了128个元素,循环到了3999,肯定溢出啊。
        //而且斐波那契数列到第45项 int 类型就装不下了。
    int a[MAX]={0};
    a[0]=1;
    a[1]=2;
    int i;
    for(i=2;a[i]<4000;i++)
    {
        a[i]=a[i-1]+a[i-2];
        printf("a[%d]=%d\n",i,a[i]);
    }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-28 20:48:33 | 显示全部楼层    本楼为最佳答案   
# include <stdio.h>
#define MAX 128
int main()
{
        //数组只定义了128个元素,循环到了3999,肯定溢出啊。
        //而且斐波那契数列到第45项 int 类型就装不下了。
    int a[MAX]={0};
    a[0]=1;
    a[1]=2;
    int i;
    for(i=2;a[i]<4000;i++)
    {
        a[i]=a[i-1]+a[i-2];
        printf("a[%d]=%d\n",i,a[i]);
    }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-28 21:03:29 | 显示全部楼层


大佬,是不是我对for循环理解有误啊,它不是应该在数组a的第i项大于4000的时候跳出循环吗,为什么没有跳出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-28 21:07:03 | 显示全部楼层
shawshanke 发表于 2021-1-28 21:03
大佬,是不是我对for循环理解有误啊,它不是应该在数组a的第i项大于4000的时候跳出循环吗,为什么没有 ...


你的for判断条件不对,a【i】  还没有赋值你就去判断了
应该用a[i-1]去判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-28 21:07:45 | 显示全部楼层

好吧我好像明白了,每结束一次循环后i增1,此时a(i)为零,条件永远为真,我傻了,感谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-28 21:09:21 | 显示全部楼层
李京 发表于 2021-1-28 21:07
你的for判断条件不对,a【i】  还没有赋值你就去判断了
应该用a去判断

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-28 21:11:39 | 显示全部楼层

互相帮助,不客气!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-28 21:21:26 | 显示全部楼层

不好意思,我看错了,4楼的解答是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 03:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表