以下代碼返回None某些值(例如306, 136),42, 84返回某些值(),正確返回答案。在print a和return a應(yīng)產(chǎn)生相同的結(jié)果,但它并不: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貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您將忽略遞歸調(diào)用的返回值:
gcdIter (a,b%a)
遞歸調(diào)用與對(duì)其他函數(shù)的調(diào)用沒有什么不同;如果那是您試圖產(chǎn)生的結(jié)果,您仍然需要對(duì)該調(diào)用的結(jié)果做些事情。您需要將返回值傳遞給return
return gcdIter (a,b%a)
請(qǐng)注意,分配時(shí)可以分配給多個(gè)目標(biāo):
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
return a
return gcdIter(a, b % a)
您真的不需要關(guān)心這里的較大和較小值。一個(gè)更緊湊的版本是:
def gcd_iter(a, b):
return gcd_iter(b, a % b) if b else abs(a)
添加回答
舉報(bào)
0/150
提交
取消