Python基础算法之递归(入门)

Python基础算法之递归(入门),第1张

Python基础算法之递归(入门)

了解递归的特点:

  • 函数内部自己调用自己
  • 必须有出口(对于没用出口的递归即使死循环)

接下来以分析求3以内累加和来了解递归

先看用普通方法求:

sum=0
for i in range(4):
    sum+=i
print(sum)

是逐个一个接一个相加。

对于递归而言,即求

第一层:3+2以内累加和

第二层:而2以内累加和=2+1以内累加和

第三层:而1以内累加和=1(此时1这个确值即是出口)

接下来上代码分析

def sum_numbers(num):  #首先定义一个函数 
    if num==1:    #如果num是1直接返回1 即1的累加和=1
        return 1  #返回这个值(出口)
    return num+sum_numbers(num-1)  #否则,(例如求的是3 返回3+2以内的累加和) 在此再对函数调用,不过求的是2以内累加和,所以num-1
a=sum_numbers(3)  #用一个变量接收
print(a)  #输出结果

对于递归而言,既是有递 有归,可以想象求这个3的累加和 一层层下去,然后一层层返回

对于回的过程:第三层 num==1的时候,return返回了1这个值,这个值的实现是因为第二层调用了sum_numbers(num-1) #此时num-1=1哦,所以它会返回给第二层 即是 1赋给了第二层的sum_numbers(num-1) 。记住第二层的num是2 然后对于第二层num+sum_number(num-1) 就是2+1=3 然后return 返回这个值到了第一层 第一层的num=3 然后3+3得到了6 return返回给了函数。

再用一个变量接收函数,然后print这个变量就能得到结果

  • 递归 必须要有一个出口,如果没有出口就会重复调用,不断的开辟栈帧空间

  • 普通过程是有去,直接实现。 递归有去有回。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5689112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存