关于如何对递归函数的理解

  1、理解递归函数的前置知识

本人初次接触程序关于如何理解和运用递归函数也卡了好长一段时间,关于理解他首先要理解几个要点:

     一、函数调用的原理要懂得

     二、程序的执行顺序执行流程要清楚,然后一步步结合程序调用函数的原理分析其中的递推和回归过程

    

  2 、关于递归函数调用占用资源大的问题的原理解释

     记住函数调用传递的是值传递,调用了一个函数,把一个值传递过去让其他函数(此函数可以又是其自身,即递归函数就是一个一般函数的一个特殊函数,调用其自身)处理,此函数就要另外临时开辟相关存储资源来处理被调用者丢过来的参数,所以递归调用在数量级别大的话要占用大量资源就不难理解了。当递归调用达到截至条件时候程序就执行当前递归函数所在的函数(暂且称之为父函数)剩余的程序语句(如打印、输出、等其他处理要求)。

  3、关于递归函数到达截至条件时层层进去及反出的理解

要执行当前值和操作,就要知道下一个值,要知道下一个值就要知道下下个值....一直依次类推(在条件未达到时),最终有个截止条件的值是知道的。

当程序执行到递归截至条件的那一步时候,则第一次执行当前程序(每递推进去一次,会有新的程序块,有新的变量)剩下的其他操作。然后后面一层还处于等待获取变量的状态,当它前面的一层已经获取了值了,那本层值也知晓了,那它就要执行它本次剩下的其他操作,后续同理......

 

例:

fact(n)用递归:

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

 

如果我们计算fact(5),可以根据函数定义看到计算过程如下:

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值