python 递归调用 返回值问题

Posted beforeluck

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 递归调用 返回值问题相关的知识,希望对你有一定的参考价值。

当使用递归时并有返回值时,调用自身函数时需要加上return语句如下:
def daxiao(biao1,biao2):
    #判断两个列表的大小,根据里面的元素大小
    #如果biao1大于biao2,返回1,
    #如果biao1小于biao2,返回0
    #如果两者相等,返回3
    geshu1=len(biao1)
    geshu2=len(biao2)
 
    b1=int(biao1[0])
    b2=int(biao2[0])  #这里只能比较数值大小,不能通过字符串直接比较大小
    print(biao1)
    print(biao2)
    print(b1,b2,\'d\')
    if b1>b2 :
        print(b1,b2)
        return 1
    elif b1<b2 : 
        return 0
    else:
        if(geshu1==geshu2==1):
            print(\'same name\')
            return 3
        elif(geshu1==1 and geshu2>1):
            return 0
        elif(geshu1>1 and geshu2==1):
            return 1
        else: 
           # a=daxiao(biao1[-geshu1+1:],biao2[1-geshu2:])
           # return a
   #上面两句和这一句是等价的
           return daxiao(biao1[-geshu1+1:],biao2[1-geshu2:])
           
这里的return必须要加上,不然返回值就是none,
因为调用函数时,是向里传输数据,不加return时,就没法往回传输数据。方法里的return只是跳出被调用的那一层函数,当调到最外层时,语句是在调用的函数那里,运行下去没有return就返回None。
所以必须在调用函数后加个return.要么像绿色的那样加两句,要么像红色的直接返回就好。python 递归调用 返回值问题 - 眺望下一站 - 生活荒地

 https://www.cnblogs.com/yechenkai/p/7143475.html

以上是关于python 递归调用 返回值问题的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶 —— 尾递归

尾递归 递归函数中,递归调用是整个函数体中最后的语句,且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归,空间复杂度是O

14 python初学(高阶函数 递归函数 内置函数)

为什么递归函数调用需要将值返回给调用函数?

Python之路_递归

Python:递归+内置函数+第三方模块+md5加密+操作mysql