遞回實作接受兩個正整數 a 和 b 的函式 halves,并回傳一個串列,其中包含值 a(轉換為 float 型別)和大于 b 的 a 的所有連續半部分。我這樣試過,但它回傳一個空串列,我不明白發生了什么:
def metades(a, b):
if a < b: return []
if a > b:
lst = []
a = float(a/2)
lst.append(a)
return lst and metades(a,b)
print(metades(100,3))
應該回傳:
[100.0, 50.0, 25.0, 12.5, 6.25, 3.125]
回傳:
[]
uj5u.com熱心網友回復:
要在遞回函式中處理串列,您必須將其放入函式的引數中:
def metades(a, b, res = None):
res = res or []
if a <= b: return res
if a > b:
res.append(a) # put first append and then division to retrieve also first value of 'a'
a = float(a / 2)
return metades(a, b, res)
print(metades(100,2))
輸出將是:
[100, 50.0, 25.0, 12.5, 6.25, 3.125]
uj5u.com熱心網友回復:
# your code goes here
def metades(a, b):
result = []
if a >= b:
result.append(float(a))
result.extend(metades(a/2, b))
return result
print(metades(100,3))
輸出
[100, 50.0, 25.0, 12.5, 6.25, 3.125]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535662.html
標籤:Python数组数学
