我的任務是找出 num1 在整數之前除以 num2 需要多少次,使用遞回。我目前的代碼是
def fraction_count(num1, num2):
times = int(0)
result = num1/num2
num1 = int(result)
if result%2 == 0:
return times
if (num1/num2)%2 != 0:
return times 1
print(fraction_count(32,3))
預期是:
fraction_count(32, 3) → 2 # 32 → 10.667 → 3.333 → 1; 1 is whole → 2
所以我現在有 1 的輸出,因為它只運行一次。我在這里想念什么?
uj5u.com熱心網友回復:
擺脫 Nin17 的答案,但滿足任務的要求,使其遞回產生:
def fraction_count(num1, num2):
num1 = int(num1)
num2 = int(num2)
if num1 % num2 == 0:
return 0
return 1 fraction_count(num1 // num2, num2)
num1如果并且num2保證是整數,您可以通過消除型別轉換來使其更快一點。使用型別提示(在 python 3.5 中添加),代碼變為:
def fraction_count(num1: int, num2: int) -> int:
if num1 % num2 == 0:
return 0
return 1 fraction_count(num1 // num2, num2)
短而甜。遞回可能比回圈效率低,但它通常提供簡潔的代碼。
uj5u.com熱心網友回復:
這個問題令人困惑,但這實作了與您的示例類似的東西,并為fraction_count(32, 3)
def fraction_count(num1, num2):
num1 = int(num1)
num2 = int(num2)
count = 0
while num1 % num2:
num1 //= num2
count = 1
return count
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460412.html
上一篇:條件變數是否存在和不存在
下一篇:簡寫陣列if陳述句
