【基础】函数的递归调用
递归含义:递归是一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。
我们可以通过递归把使函数更接近于解
递归的过程可以分为两个阶段:
第一阶段是递推,把一个问题分解为若干个子问题,由未知逐渐接近已知,最后到达可以求解的终点
分解问题的操作称为递推步,最后的可以求解的称为递归基
第二阶段是回归,由已知最后的已知,一步步向上回归,回到初始点
/* *摘 要:以阶乘为例演示函数的递归调用(头递归) *作 者:水汐音 *完成日期:2018年2月22日 */ #include <iostream> using namespace std; int Factorial(int a); int main() { int a,f; cin >> a; f = Factorial(a); cout << f << endl; return 0; } int Factorial(int a){ int f;//储存阶乘结果 if (a==0){ f = 1; } else { f = a * Factorial(a - 1); } return f; }
以输入 4 为例,我们来看下计算 4! 的过程
(右键保存在本地放大看,图片没有被压)
当 a=0 时,我们获得了可以解决当前最小问题的值,通过回归,一步步往回计算得到我们原本问题的值
这种递归方式也称为头递归
与之相对的,还有一种递归方式——尾递归
/* *摘 要:以阶乘为例演示函数的递归调用(尾递归) *作 者:水汐音 *完成日期:2018年2月24日 */ #include <iostream> using namespace std; int Factorial(int n,int product); int main() { int n,product,f; cin >> n >> product; f = Factorial(n,product); cout << f << endl; return 0; } int Factorial(int n, int product) { if (n == 0) { return product; } product = product * n; return Factorial(n - 1, product); }
输入 n = 4, product = 1 来计算 4!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步