除法是基于另一个函数的重复减法吗



如何使用"减法((";函数转换为for/while循环中的division((函数,以基于重复减法进行除法运算,给出商和余数?非常感谢。这是我到目前为止的代码:

def subtraction(x, y): #subtraction function
return x - y
def division(x, y): #division function
repeatsub = 0
for i in range(y):
repeat = subtraction(repeatsub, 2)
return repeatsub

Division正在将一个数字写入表单:CCD_ 1,其中CCD_。所以你应该反复地从x中减去y,而result>=y。最后的结果是余数。商是调用的次数,每次减法后可以像quotient=0quotient=quotient+1一样进行。

我发现最简单的方法是根据本指南从y减去x,直到达到0。

试试这个代码:

def subtraction(x, y): #subtraction function
return x - y
def division(x, y): #division function
if (y==0):
return -1 #ZeroDivisionError
repeatsub = 0
while (x>y):
x = subtraction(x, y)
repeatsub +=1
return repeatsub

对于这个主脚本:

x=13
y=2
print(division(x,y))

按预期打印CCD_ 6。

我还建议处理除以零的特殊情况,在本例中,我返回-1,但您可以使用任何适合您的其他解决方案进行更改。

while条件x>y确保我们仍然需要减法,如果你确定它是一个整数除法,你可以把它改为x>0

注意:当y大于x=ay+b0时,我的解决方案也能工作,这使它变得优雅而简单。

执行整数除法并返回商和余数。

def subtraction(x, y): # Subtraction function
return x - y
def division(x, y): # Division function
if y == 0:
raise ZeroDivisionError
quotient = 0
remainder = x
while remainder >= y:
remainder = subtraction(remainder, y) # or remainder -= y
quotient += 1
return (quotient, remainder)
print("Quotient and remainder are", division(10, 2))

输出:

Quotient and remainder are (5, 0)

最新更新