最近學習了一個叫遞歸的概念,裏面最著名的一個例子就是斐波那契問題,以爲頗有意思,就來實現一下:
什麼是斐波那契數列
斐波那契數列,又稱黃金分割數列,值得這樣一個數列:0、一、一、三、五、八、1三、2一、3四、……在數學上,斐波那契數列以以下形式遞歸方法定義:
  這是一個線性遞推數列。數組
遞歸實現方式:
Demo:函數
#include <stdio.h>//recursive fibonacciint rec_fibo(int n){ if(n == 1 || n == 2) return 1; if(n > 2) return (rec_fibo(n - 2) + rec_fibo(n - 1));}int main(void){ int n = 0; //提醒user輸入 printf("please input you want to test number:\n"); scanf("%d", &n); int fi_num = 0; //調用rec_fibo()函數 fi_num = rec_fibo(n); //向屏幕輸出 printf("F[%d] = %d\n", n, fi_num); return 0;}
非遞歸實現方式:
Demo:學習
//fibonacci non-recursive implementationint non_rec_fibo(int n){ //定義一個臨時儲存數組來存儲 int temp[2]; //分別給0,1下標的數組賦初值 temp[0] = 1; temp[1] = 1; int i = 0; if(n == 1 || n == 2) return 1; else { for(i = 2; i < n; i++) { //進行數組內部的數據轉換 int tp = temp[0] + temp[1]; temp[1] = temp[0]; temp[0] = tp; } return temp[0]; }}int main(void){ int n = 0; printf("please input you want to test number:\n"); scanf("%d", &n); int fi_num = 0; fi_num = non_rec_fibo(n); printf("F[%d] = %d\n", n, fi_num); return 0;}
ok這裏已經完整的說明了斐波那契數列的兩種思想!!!spa