如何避免在递归函数中手动设置变量的初始值?

时间:2016-10-07 21:17:09

标签: python

我找到了欧拉项目5的解决方案(可以被1到20的所有数字整除的最小正数是多少?),可变范围的整数值均匀分配:

def Euler5(start, end, counter):
    x = counter
    while start <= end:
        if x%counter == x%start:
            return Euler5(start+1, end, x)
        else:
            x += counter
    return x

但我必须手动将计数器设置为最小的整数值(初始counter = start值)。有没有办法自动执行此操作并维护算法?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望counter == start用于初始通话,而无需在第一次通话中手动指定counter

为此,您可以将counter设置为默认值None,并在函数开头检查此项,如果是这种情况,请将counter设置为适当的值:

def Euler5(start, end, counter=None):
    if counter is None:
        counter = start

    x = counter
    while start <= end:
        if x % counter == x % start:
            return Euler5(start+1, end, x)
        else:
            x += counter
    return x