下面的代码使用了函数递归的思想,优点是代码量较少,可是当n较大时运算效率不高
int Fib(int n) {
if (n <= 2) {
return 1;
}
else {
return Fib(n - 1) + Fib(n - 2);
}
}
int main() {
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d\n", ret);
return 0;
}
下面代码使用了函数迭代的思想,对于这个问题效率高
int Fib(int n) {
int a = 1;
int b = 1;
int c = 1;
int i = 0;
for (i = 0; i < n - 2; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
int main() {
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d\n", ret);
return 0;
}