数据 结构——递归

递归

递归不一定非要像斐波拉契数列一样在return中调用函数

递归的结束条件就是初始条件值

通常的方法将递归调用放在if语句中

 

n!通过递归实现(常用方法还是通过while实现)

def jiecheng(n):
    if n==0:
        return 1
    else:
        sum=n*jiecheng(n-1)#右边只有阶乘表达式,没有什么sum项
    return sum

斐波拉契数列:

def fib(n):
    if n==0:
        return 0
    elif n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)#这里会把最终的值通过不断调用,计算出有多少个f0,f1,f2 

斐波拉契数列是递归调用一次,而二叉树是两次递归调用

问题:

1、递归是等一直递归完后再往下运行吗?

2、后面出现递归的情况,前面的递归处的语句是继续执行吗?

3、递归后每一层都执行了所有语句吗?

递归的理解:https://www.cnblogs.com/xzxl/p/7364515.html

关键理解:recurs()进行了5次递归调用,则第一个statements1部分将按函数调用的顺序执行5次,然后statements2部分将以与函数调用相反的顺序执行5次。进入5层递归后,程序将沿进入的路径返回。(第一个递归调用正向5次,知道5次执行完再反过来执行第二个递归调用)

 

参考链接:https://blog.csdn.net/allenchenhh133/article/details/80291252

1、 以二叉树的左子树,前序遍历为例说明:当递归到空的时候,  会返回到根节点D,接下来程序会从递归的那个地方往后执行,显然就对应着D的右子树了

2、这里内层函数是两个(这个之前不是这样理解的,解释递归到返回后下一步就是左边的右子树了),所以左子树就能全部打印出

3、递归的退出条件,也就是空子树就返回,直接返回到上一个节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值