递归——求n! 和 Hanoi汉诺塔问题

什么是递归?

在定义一个过程或函数时出现调用本过程或本函数的成分,称为递归。若调用自身,称为直接递归。若过程或函数p调用过程或函数q,而q又调用p,称为间接递归。

 

尾递归:如果一个递归过程或递归函数中递归调用语句是最后一条执行语句,则称这种递归调用为尾递归。

 

递归算法通常把一个大的复杂问题层层转化为一个或多个与原问题相似的规模较小的问题来求解,只需要少量的代码就可以描述出解题过程所需要的多次重复计算,大大减少了算法的代码量。

所有的递归函数都能找到对应的非递归定义

 

一般来说,能够用递归解决的问题应该满足一下三个条件:

  1. 需要解决的问题可以转化为一个或多个子问题来求解,而这些子问题的求解方法与原问题完全相同,只是在数量规模上会有所不同
  2. 递归调用的次数必须是有限的
  3. 必须有结束递归的条件来终止递归

 

递归算法求解过程是:先将整个问题划分为若干个子问题,通过分别求解子问题,最后获得整个问题的解。这种自上而下将问题分解、求解,再自下而上引用,合并,求出最后解答的过程成为递归求解过程。这是一种分而治之的算法设计方法。递归调用是函数嵌套调用的一种特殊情况,即它是调用自身代码。

1、每递归调用一次,就需要进栈一次,进栈次数成为递归深度,当n越大,递归深度越深,开辟

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值