需求:打印 Fibonacci数列
思路:
当前项的值等于前两项数值的和
F=(F-1)+F(F-2)
样例:
输入:10
输出:1 1 2 3 5 8 13 21 34 55
辗转相加法实现
#include<stdio.h>
int main()
{
int num, f, f1, f2, i;
scanf("%d", &num); //用户输入打印的次数
f1 = f2 = 1;
for(i = 1; i <= num; i++) //打印的次数
{
if(i==1 || i==2) //第一项第二项数值都是 1
printf("%d ", f1);
else
{
f = f1+f2;
f1 = f2; // 移动数值
f2 = f;
printf("%d ", f);
}
}
return 0;
}
递归实现
#include<stdio.h>
int fibo(int);
int main()
{
int num, i;
scanf("%d", &num);
for(i = 1; i <= num; i++)
printf("%d ", fibo(i));
return 0;
}
int fibo(int n)
{
if(n==1 || n==2)
return 1;
else
return fibo(n-1)+fibo(n-2);
}