#include<stdioh>
int main()
{
long t,F=1,a=0,b=1,i;
scanf("%ld",&t);
for(i=2;F<=t;i++)
{
F=a+b;
a=b;
b=F;
}
printf("首个大于%ld的数是第%ld个数,是%ld\n",t,i,F);
getch();
return 0;
}
斐波那契数列是一个经典的数列,前两项为0和1,后续项为前两项之和,即:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
以下是C语言程序文件,用于求解小于自然数n的斐波那契数列第50项的值:
#include <stdioh>
int main() {
int n = 100; // 假设n为100
int a = 0, b = 1, c;
int i;
for (i = 2; i < 50; i++) {
c = a + b;
if (c > n) break;
a = b;
b = c;
}
printf("小于%d的斐波那契数列第50项为%d", n, b);
return 0;
}
解释:
我们假设n为100,可以根据实际情况修改。
定义a=0,b=1为前两项,c为当前项,i从2开始循环,因为前两项已经确定。
每次循环,c为a和b之和,判断c是否大于n,如果大于,则退出循环,否则将a和b往后移动一项。
输出小于n的斐波那契数列第50项,即b。
注意:这里求的是小于n的斐波那契数列第50项,如果要求恰好等于n的斐波那契数列第几项,需要对程序进行修改。
最主要原因是for语句后面不应加分号,由于有分号其后面{}中的语句就不属于for了
还有一些其他细节需要修改:比如f3应先计算再输出,因为没有给f3赋初值;
因为是从f3开始输出的,应该先输出f1和f2,再执行for循环,然后i从3开始
对于long整型数输出最好用"%ld",为了美观可以用"%6ld"使输出位宽一致
修改后的代码和运行结果如下:
可见正确输出了Fibonacci数列的前30个数,望采纳~
附源码:
#include <stdioh>
int main() {
int i;
long f1 = 1, f2 = 1, f3;
printf("%6ld %6ld ", f1, f2); // 先输出前两项
for (i = 3; i <= 30; i++) // 这里没有分号
{
f3 = f1 + f2; // 计算并输出第三项
printf("%6ld ", f3);
f1 = f2;
f2 = f3;
if (i % 6 == 0)
printf("\n");
}
return 0;
}
以上就是关于编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列全部的内容,包括:编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列、1编写一个程序文件,求小于任意自然数n的斐波那契(Fibonacci)数列第50项斐波那、用c语言求Fibonacci数列前30个,求这个程序哪里错了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)