本专栏持续输出数据结构题目集,欢迎订阅。
题目
斐波那契数的定义为:F0=F1=1,Fi=Fi−1+Fi−2(i≥2)。本题要求计算第 n 项斐波那契数(注意 n 从 0 开始计数)。请尝试用递归和循环两种方法实现。
注意:由于斐波那契数呈指数级增长,所以对比较小的 n 也会得到很大的计算结果。这里假设输出在 long long 型整数范围内,即 n≤91。
输入格式:
输入在一行中给出一个非负整数 n(≤91)。
输出格式:
在一行中输出第 n 项斐波那契数。
输入样例:
46
输出样例:
2971215073
代码
#include <stdio.h>
// 递归方法计算斐波那契数
long long fibonacci_recursive(int n) {
// 基本情况
if (n == 0 || n == 1) {
return 1;
}
// 递归调用
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
}
// 循环方法计算斐波那契数
long long fibonacci_iterative(int n) {
if (n == 0 || n == 1) {
return 1;
}
long long prev_prev = 1; // F(n-2)
long long prev = 1; // F(n-1)
long long current; // F(n)
for (int i = 2; i <= n; i++) {
current = prev + prev_prev;
prev_prev = prev;
prev = current;
}
return prev;
}
int main() {
int n;
scanf("%d", &n);
printf("%lld\n", fibonacci_iterative(n));
return 0;
}
906

被折叠的 条评论
为什么被折叠?



