- zouyc 的博客
函数与递归
- @ 2025-6-20 9:45:46
什么是递归
递归的两大要素:

规模从大到小
题目:求n的阶乘

规模从小到大
题目:悟空吃蟠桃

分析:

题解一:递归解法
#include <iostream> //悟空吃蟠桃
using namespace std;
int m; //天
//获取第n天的蟠桃数
//n 第n天
int f(int n) { // 规模:从小到大
if (n==m) return 1; //最后1天剩下1个桃子 终止条件
else {
return (f(n+1)+1)*2; //自己调用自己,递归关系式
}
}
int main() {
cin>>m; //第几天
int x=f(1); //x第1天有多少桃子
cout<<x;
return 0;
}
题解二:循环解法
/*
悟空吃蟠桃
循环解法
*/
#include <iostream>
using namespace std;
const int N=35;
int a[N];
int main() {
int n;
cin>>n;
a[n]=1; //最后一天,1个桃子
for (int i=n;i>=1;i--) {
a[i-1]=(a[i]+1)*2;
}
cout<<a[1];
return 0;
}
小结
一般来说,如果一道题既可以递归解决,也可以循环解决,优先使用循环的方法。