2024-04-25 20:19:38 发布
网友
不确定出了什么问题,它没有给出输出,我正在考虑在语句中加入“余数(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 y==0: # check to avoid infinite loops return float("Nan") if x>=y: return remainder(x-y, y) else: # base case return x
根据定义,“递归”意味着您的函数在某个点调用自身。到目前为止,你的还没有。考虑一组输入的函数流,例如,^ {< CD1> }和^ {< CD2> },以及遍历每个语句以查看它正在做什么。这通常有助于调试
在设计递归函数时,通常最容易从开始重复(在本例中,从x中减去y)。然后,询问基本情况是什么?是什么情况使其不可能再次发生?在这种情况下,如果从x中减去y,结果将低于零。换句话说,如果y大于x。然后,函数的其余部分只是设置调用自身,并调用自身
x
y
在这种情况下,通过递归实现模的实际操作更简单:
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
6
您需要调用函数来执行递归
根据定义,“递归”意味着您的函数在某个点调用自身。到目前为止,你的还没有。考虑一组输入的函数流,例如,^ {< CD1> }和^ {< CD2> },以及遍历每个语句以查看它正在做什么。这通常有助于调试
在设计递归函数时,通常最容易从开始重复(在本例中,从
x
中减去y
)。然后,询问基本情况是什么?是什么情况使其不可能再次发生?在这种情况下,如果从x
中减去y
,结果将低于零。换句话说,如果y
大于x
。然后,函数的其余部分只是设置调用自身,并调用自身在这种情况下,通过递归实现模的实际操作更简单:
函数的每次迭代都从
x
中减去另一个y
,直到y
大于x
,此时x
作为余数返回请注意,这对于负数不起作用,原因很明显
你也可以使用这个答案,你不需要递归
我会给你
6
相关问题 更多 >
编程相关推荐