Python递归而不使用While循环,并在不使用%运算符的情况下查找x/y的其余部分?
不确定出了什么问题,它没有给出输出,我正在考虑在语句中加入“余数(x-y,y)”,但仍然不起作用Python递归而不使用While循环,并在不使用%运算符的情况下查找x/y的其余部分?,python,if-statement,recursion,operators,Python,If Statement,Recursion,Operators,不确定出了什么问题,它没有给出输出,我正在考虑在语句中加入“余数(x-y,y)”,但仍然不起作用 def remainder(x, y): if x == y: return 0 elif x>y: x = x-y if x<y: return x x=int(input("x: ")) y=int(input("y: ")) print (f'Remainder: {remainder(x, y)
def remainder(x, y):
if x == y:
return 0
elif x>y:
x = x-y
if x<y:
return x
x=int(input("x: "))
y=int(input("y: "))
print (f'Remainder: {remainder(x, y)}')
def余数(x,y):
如果x==y:
返回0
如果x>y:
x=x-y
如果x您需要调用函数来执行递归
def remainder(x, y):
if y==0: # check to avoid infinite loops
return float("Nan")
if x>=y:
return remainder(x-y, y)
else: # base case
return x
根据定义,“递归”意味着您的函数在某个点上调用自己。到目前为止,你的还没有。考虑一组输入的函数流——例如,代码> x=22 < /代码>和<代码> y=7 < /Cord>,并遍历每个语句来查看它正在做什么。这通常有助于调试
在设计递归函数时,通常最简单的方法是从要重复的操作开始(在本例中,从x
中减去y
)。然后,询问基本情况是什么——是什么情况使其不可能再次发生?在这种情况下,如果从x
中减去y
,结果将低于零。换句话说,如果y
大于x
。然后,函数的其余部分只是设置调用自身,并调用自身
在这种情况下,通过递归实现模的实际操作更简单:
def remainder(x, y):
# base case
if y > x:
return x
# recursive case
return remainder(x-y, y)
函数的每次迭代都会从x
中减去另一个y
,直到y
大于x
,此时返回的x
将作为余数
请注意,这对负数不起作用,原因很明显。您也可以使用这个答案,无需递归
def remainder(x,y):
ans = x/y
rem = y * (ans-int(ans))
return round(rem)
remainder(132,7)
我会给你
6
为什么要费心四舍五入呢?只需使用整数除法运算符/
。我们需要余数。这会给你一个商