Как избежать ручной установки начального значения переменной в рекурсивной функции?

#python

#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:

Если я правильно вас понял, вы хотите это 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
  

Комментарии:

1. Я был бы признателен за поддержку, если это действительно так. 😉

2. Спасибо, я ценю это.