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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM