递归
#include<stdio.h>
int fbnq(int n)
{
if (n <= 2)
return 1;//n=1,2 返还1;
else
return fbnq(n - 1) + fbnq(n - 2);//n>2 返还前两个数之和
}
int main()
{
int n = 0;
scanf("%d", &n);
while(n){
int ret = fbnq(n);
printf("%d ,", ret);
n--;
}
return 0;
}
实例 - 输出指定数量的斐波那契数列
#include <stdio.h> int main()
{ int i, n, t1 = 0, t2 = 1, nextTerm; printf("输出几项: ");
scanf("%d", &n);
printf("斐波那契数列: ");
for (i = 1; i <= n; ++i)
{ printf("%d, ", t1);
nextTerm = t1 + t2; t1 = t2; t2 = nextTerm; } return 0;
}
运行结果:
输出几项: 10 斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
实例 - 输出指定数字前的斐波那契数列
#include <stdio.h>
int main()
{ int t1 = 0, t2 = 1, nextTerm = 0, n; printf("输入一个正数: ");
scanf("%d", &n);
// 显示前两项 printf("斐波那契数列: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{ printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
return 0;
}
运行结果:
输入一个正数: 100 斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,