遞歸算法2——簡單遞歸之斐波那契數列(遞歸法)

斐波那契數列指的是這樣的一個數列:

0,1,1,2,3,5,8,13,21,......從第3個數起,每個數都是前兩個數之和。編寫算法,輸出斐波那契數列的前n項。

【分析】
斐波那契數列可以寫成如下公式:

fibibacci(n)= \begin{cases} 0 & n=0 \\ 1 & n=1 \\ fibibacci(n-1) + fibibacci(n-2) & n=2,3,4,... \end{cases}

當n=4時,求fibibacci(4)的值過程如下圖所示。

其中,圖中陰影部分爲對應的函數值。求fibibacci(4)的值,需要知道fibibacci(3)與fibibacci(2)的值,而求fibibacci(3)的值需要知道fibibacci(2)和fibibacci(1)的值,求fibibacci(2)的值需要知道fibibacci(1)和fibibacci(0)的值。fibibacci(1)=1,fibibacci(0)=0,所以直接返回。

code:

#include<stdio.h>
#include <iostream>
int fib(int n);
void main()
{
	int n;
	printf("請輸入項數:");
	scanf("%d", &n);
	printf("第%d項的值:%d\n", n, fib(n));
	system("pause");
}
int fib(int n)
{
	if (n == 0)
		return 0;
	if (n == 1)
		return 1;
	if (n > 1)
		return fib(n - 1) + fib(n - 2);
	
}

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章