递归和非递归分别实现求第n个斐波那契数
例如:
输入:5 输出:5
输入:10, 输出:55
输入:2, 输出:1
方法一:(递归)
#include<stdio.h>
int Fib(int n) {
if (n == 1 || n == 2) {
return 1;
}
else return Fib(n - 2) + Fib(n - 1);
}
int main() {
int n;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}
运行结果:
方法二:(非递归)
#include<stdio.h>
int Fib(int n) {
int i = 1, j = 1;
int count = 3;
int result = 0;
if (n <= 2) {
return 1;
}
while (count <= n) {
result = i + j;
i = j;
j = result;
count++;
}
return result;
}
int main() {
int n;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}
运行结果: