我被要求在Python中定义一个递归函数,该函数以条件不使用“ /”,“%”或“ //”运算符的方式找到n除以b的余数。我定义了以下函数,该函数对正数有效。是否有更好的方法使用递归和简单条件。
def division(n, b, q = 1):
"""
parameters : a et b (integers)
returns: the remainder of a and b
pre-requisites : q = 1
"""
if n <= 0 or n < b:
if n == 0:
print("Your division has no remainder.")
elif n in range(0,5):
print("Your remainder is", n)
return 0
else:
return division(n - b, b, q) + q
print(division(274,5))
答案 0 :(得分:1)
那
def remainder(n, q):
if(n < q):
return n
return remainder(n - q, q)
print(remainder(274, 5)) # will return: 4
print(remainder(275, 5)) # will return: 0
print(remainder(123, 3)) # will return: 0
短得多...
答案 1 :(得分:1)
我相信您的老师可能只是在尝试不带商的余数。
def division(n, b):
if n < b:
return n
return division(n - b, b)
print(division(274, 5))
但是,自从您提出它以来,您就可以用商来进行处理,而不必以默认值1开头。
def division(n, b, q = 0):
if n < b:
return n, q
return division(n - b, b, q + 1)
print(division(274, 5))
主要提示,您无需检查n的范围(0,5)。