之前,你首先要知道什么是斐波那契數列
1. 非遞歸實現
int f1(int n) {
if(n <= 0) return -1; // n應該>0,這里返回-1代表錯誤;下同
int a = 1, b = 1;
int temp;
if(n == 1 || n == 2) return 0;
// 循環移動a和b
for(int i = 3; i < n; i++) {
temp = a;
a = b;
b = temp + b;
}
return a + b;
}
根據n,循環移動a和b,圖示:
2. 遞歸實現
int f2(int n) {
if(n <= 0) return -1;
if(n == 1 || n == 2) return 0;
return f2(n - 1) + f2(n - 2);
}
推導圖示: