C案例:打印斐波拉契数列
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
任务:打印斐波拉契数列前40项,每行打印5个数。
1、源代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i, count = 0;
long f1, f2, f3;
long f[40];
printf("方法一:利用简单变量进行迭代\n");
f1 = 1;
f2 = 1;
printf("%-8d %-8d ", f1 , f2);
count = 2;
for (i = 1; i <= 38; i++) {
f3 = f1 + f2;
printf("%-8d ", f3);
f1 = f2;
f2 = f3;
count++;
if (count % 5 == 0) {
printf("\n");
}
}
printf("\n\n方法二:利用数组进行递推\n");
f[0] = 1;
f[1] = 1;
for (i = 2; i < 40; i++) {
f[i] = f[i - 2] + f[i - 1];
}
for (i = 0; i < 40; i++) {
printf("%-8d ", f[i]);
if((i + 1) % 5 == 0) {
printf("\n");
}
}
return 0;
}
2、运行结果