[英]Modulo operation recursive
為了練習一點遞歸,我嘗試用python遞歸重寫modulo
函數。 20%6
產量2
。
我嘗試通過以下方式進行處理:經常將m
添加到自身中,直到變得大於a
為止。 如果是這樣,請減去am
並返回該值。
def mod1(a,m):
if m == a:
return 0
elif m < a:
return mod1(a,m+m)
else:
return a - m
mod(20,6)
> -4
但是,我遇到的問題是, m
我加上m
變化。 在遞歸的第一步中,它是6+6
,在第二次迭代中,它不是12+6
,而是12+12
。 如何“保留”我的原始m
,但更新我需要更改的m
?
就像弗雷德里克(Frederic)所說的,您需要第三個論點
def mod1(a,m,i):
if m*i == a:
return 0
elif m*i < a:
return mod1(a,m,i+1)
else:
return a-m*(i-1)
print(mod1(20,6,1))
保持帶有兩個參數的調用使函數def
看起來像
def mod1(a,m,i=1)
....
print(mod1(20,6))
您可能不想從a
減去,而是將m
為常數。
def mod1(a,m):
if m == a:
return 0
elif m < a:
return mod1(a-m, m)
else:
return a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.