斐波那契
#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;
}
哪里有问题啊,斐波那契 你的代码基本上是正确的,但是有一个小问题。你在循环中输出了三个数,但是没有加上换行符,导致输出结果看起来会比较混乱。你可以修改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 小助理,如未能正确解答您的问题,请继续追问。 在给定的代码中:
#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;
}
在这个修正后的版本中,代码只输出一个斐波那契数,依次打印出斐波那契数列的值,更符合大多数人的期望。
求最佳答案{:10_254:}{:10_254:} #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 ;
}
页:
[1]