鱼C论坛

 找回密码
 立即注册
查看: 891|回复: 3

斐波那契

[复制链接]
发表于 2023-12-24 16:14:09 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int i = 1, m, n = 1, next;
        for(m = 1; m < 50; m++)
        {
        next = i + n; 
        i = n;
        n = next;
        printf("%d %d %d ", i, n, next);
        }
        return 0;
}
哪里有问题啊,斐波那契
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-24 16:14:22 | 显示全部楼层
你的代码基本上是正确的,但是有一个小问题。你在循环中输出了三个数,但是没有加上换行符,导致输出结果看起来会比较混乱。你可以修改printf语句,在输出完三个数后加上"\n",就可以使输出结果更清晰了。修改后的代码如下所示:

#include

int main() { int i = 1, m, n = 1, next; for(m = 1; m < 50; m++) { next = i + n; i = n; n = next; printf("%d %d %d\n", i, n, next); } return 0; }


此外,你还可以考虑加上一些用户交互部分,让程序更加友好。思路如下:

#include

int main() { int count; printf("请输入斐波那契数列的长度:"); scanf("%d", &count);

int i = 1, m, n = 1, next; for(m = 1; m <= count; m++) { if(m == 1 || m == 2) { printf("1 "); continue; } next = i + n; i = n; n = next; printf("%d ", next); } return 0; }

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 16:28:46 | 显示全部楼层
在给定的代码中:
#include <stdio.h>

int main()
{
    int i = 1, m, n = 1, next;
    for(m = 1; m < 50; m++)
    {
    next = i + n;
    i = n;
    n = next;
    printf("%d %d %d ", i, n, next);
    }
    return 0;
}


这是一个 C 语言中的斐波那契数列生成程序。该程序只是简单地生成一个斐波那契序列。

这个问题可能不在于代码本身,而在于你的期望与代码的输出之间的偏差。此代码的输出将是两个相同的连续的斐波那契数,这可能不是你期望的结果。而且,给出的代码也没有任何错误处理,也没有对输入进行验证。

如果你只希望输出一个斐波那契数,你应该去掉其中的一个输出语句。 这是如何修复的:
#include <stdio.h>

int main()
{
    int i = 1, m, n = 1, next;
    for(m = 1; m < 50; m++)
    {
    next = i + n;
    i = n;
    n = next;
    printf("%d ", n);
    }
    return 0;
}


在这个修正后的版本中,代码只输出一个斐波那契数,依次打印出斐波那契数列的值,更符合大多数人的期望。

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

使用道具 举报

发表于 2023-12-24 16:53:59 | 显示全部楼层
#include <stdio.h>

int main()
{
        unsigned long long i , m , n , next  ;  // 为了确保计算结果不会溢出,应该把变量定义为 64 位无符号整型数
        printf("1 1")                        ;  // 先打印初始值
        for(i = n = next = 1 ; n < 50 ; n ++) {
                m = next                     ;  // 保存旧的 next 的值
                next += i                    ;  // 计算新的 next 值
                i = m                        ;  // 把旧的 next 值交给变量 i,准备计算下一个 next 值
                printf(" %lld" , next)       ;  // 每次只需要打印新的 next 就可以了
        }
        return 0                             ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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