递归算法讲解·题目+题解
原题链接:7972.【递归】斐波那契数列2025-08-17 21:03:12
发布于:广东
OK欢迎回来
这道题想必大家都做过,但是这道题要用递归做,我们慢慢来看
这个题目是应用场景中的第4个场景,也是以后学前缀和的基础,思路也就是第 a[i] 个数等于第 a[i-1] 的数加上第a[i-2]的数,其中第1、2个数是要赋值为 1
用代码表示就是 a[i] = a[i-1] + a[i-2];
思路知道了,题就好做了
首先先处理输入输出:
int main() {
int n;
cin >> n;
}
然后处理递归函数:
long long f(long long n) { //输入结束条件。俗话说,3年oi一场空,不开long long见祖宗,所以要开long long
if (n == 1 || n == 2) { //第1、2个数是要赋值为 1
return 1;
}
return f(n - 1) + f(n - 2);
}
最后调用递归:
#include <bits/stdc++.h>
using namespace std;
long long f(long long n) {
if (n == 1 || n == 2) {
return 1;
}
return f(n - 1) + f(n - 2);
}
int main() {
int n;
cin >> n;
cout << f(n);
}
这样就写完了,简单吧!
代码执行流程:
1.输入处理:
AC狗输入一个整数n,程序将其读取到变量n中。
2.函数调用:
调用f(n),开始递归计算斐波那契数列的第n项。
3.递归过程:
基例(结束条件):当n为1或2时,直接返回1。
递归步骤:对于n > 2,函数调用自身计算f(n-1)和f(n-2),并将结果相加返回。
4.结果输出:
将计算得到的斐波那契数列中的第 n 项输出。
举一个例子:
假设AC狗输入5,那么 n = 5 ,程序的执行过程如下:
f(5)调用f(4)和f(3)
f(4)调用f(3)和f(2)
f(3)调用f(2)和f(1)
f(2)返回1
f(1)返回1
计算回溯,f(3) = 1 + 1 = 2。
f(4) = 2 + 1 = 3。
f(5) = 3 + 2 = 5。
最后,输出结果:5。
ok今天就讲到这里,拜拜
这里空空如也
有帮助,赞一个