打印斐波那契(Fibonacci)数列

需求:打印 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);
}
posted @ 2016-02-21 14:21  Rancvl  阅读(512)  评论(0编辑  收藏  举报