您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
022第五章 循环控制结构程序07-高数Fibonacci序列实现
发布时间:2021-04-18 19:55:22编辑:雪饮阅读()
例6.7 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。
即:
F(1) = 1 (n=1)
F(2) = 1 (n=2)
F(n) = F(n-1)+F(n-2) (n≥3)
那么对于这个题目Fibonacci虽然是高数,不过就算你没有学过高数也不要紧,因为这个规律已经显而易见了。
那么我尝试手动先列举出前几个值如:1,1,2,3,5,8,13,21....
好吧,那么基于此,假如我们每行输出4个数字,也就是4个数字一换行,然后循环时候每个循环输出2个,总共循环20次,则就实现了40个序列值。那么具体实现及剖析如:
#include <stdio.h>
void main()
{
long int f1,f2;
int i;
//公式中的f(1)
f1=1;
//公式中的f(2)
f2=1;
//Fibonacci数列参考值:1,1,2,3,5,8,13,21....
for(i=1; i<=20; i++)
{
//行内每次输出2个值
//%12ld:输出12位长整型
printf("%12ld %12ld",f1,f2);
//20以内被2整除余数为0,则有小于2的有0,不小于2的都是2的倍数
//希望每输出4个数字就换一次行
if(i%2==0)
{
printf("\n");
}
//这里以f1和f2的规律来运算,不需要f3也是可以的,虽然公式是f3为计算结果,但是我们每次显示的是两个值,即f1和f2
//每次输出两个值,所以这里计算的f1就是下一个f1
f1=f1+f2;
//每次输出两个值,所以这里计算的f2就是下一个f2
f2=f2+f1;
}
}
关键字词:c,循环,Fibonacci