亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Python遞歸函數返回None

為什么Python遞歸函數返回None

慕森王 2019-11-04 14:13:27
以下代碼返回None某些值(例如306, 136),42, 84返回某些值(),正確返回答案。在print a和return a應產生相同的結果,但它并不:def gcdIter (a,b):    c = min (a,b)    d = max (a,b)    a = c    b = d    if (b%a) == 0:        print a        return a    gcdIter (a,b%a)    print gcdIter (a,b)
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您將忽略遞歸調用的返回值:


gcdIter (a,b%a) 

遞歸調用與對其他函數的調用沒有什么不同;如果那是您試圖產生的結果,您仍然需要對該調用的結果做些事情。您需要將返回值傳遞給return


return gcdIter (a,b%a)    

請注意,分配時可以分配給多個目標:


def gcdIter(a, b):

    a, b = min(a, b), max(a, b)

    if b % a == 0:

        return a

    return gcdIter(a, b % a)  

您真的不需要關心這里的較大和較小值。一個更緊湊的版本是:


def gcd_iter(a, b):

    return gcd_iter(b, a % b) if b else abs(a)


查看完整回答
反對 回復 2019-11-04
  • 1 回答
  • 0 關注
  • 440 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號