天天看點

函數遞歸求斐波那契數列

函數遞歸求斐波那契數列

//函數遞歸求斐波那契數列
//編寫程式,求數列1,1,2,3,5,8,13,21,……
//思路:
//第一步:找出表示數列第N項的遞歸公式:F(N)=F(N-1)+F(N-2)
//第二步:遞歸的結束條件,當N=1或N=2時,F(N)=1;

long int Fib(int n)
{
	if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2); 
	//拿n=3帶入一下,第一個傳回值為1 第二個傳回值1 是以第三項是2
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("第%d項的斐波那契數是:%ld\n", n, Fib(n));
	return 0;
}
//總結:
//編寫遞歸的 要點
//1):找到正确的遞歸算法,這是編寫遞歸程式的基礎
//2) :确定遞歸算法的結束條件,這是決定遞歸程式能否正常結束的關鍵

//數值問題,可以表達為數學公式,從數學公式推導出問題的遞歸定義(也就是算法的具體步驟),然後
//确定問題的邊界條件,進而确定遞歸的算法和遞歸結束條件