递归调用

本文介绍了递归和迭代的概念,通过n!的计算为例,展示了递归和迭代的实现方式。递归定义为函数在定义中调用自身,而迭代则通过循环推算变量新值。递归结束条件对于理解和正确性至关重要。同时,文章以汉诺塔问题为递归应用的典型示例,解释了如何将复杂问题分解为更小的部分。递归和迭代各有优势,递归使复杂问题简化,但迭代通常在效率上更胜一筹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、定义:

递归(recursion):一个函数在其定义中直接或间接调用自身的一种方法。

迭代(iterate):利用变量的初值推算出变量的一个新值,迭代就是A不停的调用B。

迭代是在函数内某段代码实现循环,迭代与普通循环(loop)的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值

2、说明:

首先将问题的逻辑关系用数学公式来表示,即:数学归纳法
其次进行回推和递推,注意递归结束(终止)条件。

3、应用举例:

例子:n!用递归求解:
数学归纳法公式:
          1          n=0,1; //递归结束终止条件
n!  = 
          n*(n-1)!   n>1; //建立n和n-1直接的递推关系

int fun(int n) //递归:复杂问题好理解
{
    int c = 0;
    if((1 == n)||(0 == n)) //递归结束终止条件
    {
        c = 1; 
    }
    else
    {
        c =  n*fun(n-1);
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值