Recursion 如何递归计算%b?

Recursion 如何递归计算%b?,recursion,python-3.x,Recursion,Python 3.x,我需要编写一个递归函数,返回两个数的余数。以下是我写的: def remainder(a,b): if a==b: return 0 else: k=a-b return a-b + remainder(b,a-k) 如果我们测试余数(5,3)函数将返回2,这是正确的,但是如果我们测试余数(15,3), 我们会得到12,它是假的。我只是不知道如何调试它。它应该是这样的: def remainder(a,b): if a<b

我需要编写一个递归函数,返回两个数的余数。以下是我写的:

def remainder(a,b):
    if a==b:
        return 0
    else:
        k=a-b 
        return a-b + remainder(b,a-k)
如果我们测试余数(5,3)函数将返回2,这是正确的,但是如果我们测试余数(15,3),
我们会得到12,它是假的。我只是不知道如何调试它。

它应该是这样的:

def remainder(a,b):
if a<b:
    return a
else:
    return remainder(a-b,b)
def余数(a,b):

如果a应该是这样的:

def remainder(a,b):
if a<b:
    return a
else:
    return remainder(a-b,b)
def余数(a,b):
如果a您缺少一个案例:(当a
输出:

0
如果您很懒,不想写超过两行,请点击此处:

def remainder(a,b):
    return a if a < b else remainder(a-b, b)
def余数(a,b):
如果a
您缺少一个案例:(当a 输出:

0
如果您很懒,不想写超过两行,请点击此处:

def remainder(a,b):
    return a if a < b else remainder(a-b, b)
def余数(a,b):
如果a
您可以执行以下操作:

def remainder(a, b):
    if a < b:
        return a
    return remainder(a - b, b)
如果
a
,则表示我们完成了:我们知道计算结果,可以返回
a
。否则,我们需要从
a
中减去
b
,然后再次递归调用
余数。然后可以重复进行此操作,直到
a
小于
b
。一旦发生这种情况,递归将停止(即不再调用
余数
),但我们可以返回结果。

您可以执行以下操作:

def remainder(a, b):
    if a < b:
        return a
    return remainder(a - b, b)

如果
a
,则表示我们完成了:我们知道计算结果,可以返回
a
。否则,我们需要从
a
中减去
b
,然后再次递归调用
余数。然后可以重复进行此操作,直到
a
小于
b
。一旦发生这种情况,递归将停止(即,它不会再次调用
余数
),但我们可以返回结果。

您想做同样的事情
%
做但没有
%
?您想做同样的事情
%
做但没有
%