// 斐波那契递归实现
int fibonacci0(int n) {
if (n < 1) return 0;
if (n <= 2) return 1;
return fibonacci0(n-1) + fibonacci0(n-2);
}
// 斐波那契非递归实现
int fibonacci1(int n) {
if (n < 1) return 0;
int prepreNum = 1;
int preNum = 1;
int i;
for (i=3; i<=n; ++i) {
int snap = prepreNum + preNum;
prepreNum = preNum;
preNum = snap;
}
return preNum;
}
int main() {
printf("0: %d\n", fibonacci0(0));
printf("1: %d\n", fibonacci0(1));
printf("2: %d\n", fibonacci0(2));
printf("5: %d\n", fibonacci0(5));
printf("10: %d\n", fibonacci0(10));
printf("------\n");
printf("0: %d\n", fibonacci1(0));
printf("1: %d\n", fibonacci1(1));
printf("2: %d\n", fibonacci1(2));
printf("5: %d\n", fibonacci1(5));
printf("10: %d\n", fibonacci1(10));
return 0;
}