1. 程式人生 > >求斐波那契數列的第n個數;1,1,2,3,5,8,13,21.....

求斐波那契數列的第n個數;1,1,2,3,5,8,13,21.....

遞迴方法:

#include<stdio.h>
#include<stdlib.h>

int Fibonacci_sequence(int n)
{
	if (n == 1 || n == 2) // 遞迴結束的條件,求前兩項
		return 1;
	else
	{
		return Fibonacci_sequence(n - 1) + Fibonacci_sequence(n - 2); // 如果是求其它項,先要求出它前面兩項,然後做和。
	}
}

int main()
{
	int i = 0;
	int n = 8;
	printf("Please enter a number:");
	scanf("%d", &n);
	i=Fibonacci_sequence(n);
	printf("The number is %d\n", i);
	system("pause");
	return 0;
}

#include<stdio.h>
#include<stdlib.h>

 void Fei(int n) // 非遞迴
 {
	
	int sum = 1;
	int sum1 = 1;
	int i = 0;
	int tem = 0;
	if (n < 1)
	{
		printf("輸入數字有誤\n");
	}
	else if (1 == n)
	{
		printf("第n個斐波那契數是:%d\n", sum);
	}
	else if(2 == n)
	{
		printf("第n個斐波那契數是:%d\n", sum);
	}
	else
	{
		for (i = 0; i < n - 2; i++) //  第三項等於前兩相加
		{
			tem = sum;   //  tem 儲存原來的sum
			sum += sum1; //  sum= 前兩項相加
			sum1 = tem;  //  sum1 =原來的sum    始終保證第三項等於前兩項相加
		}
		printf("第n個斐波那契數是:%d\n", sum);
	}
	
}
int main()
{
	int n = 0;
	printf("Please enter a number :");
	scanf("%d",&n);
	Fei(n);
	system("pause");
	return 0;
}