/ / Използване на Python 3 и алгоритъма на Евклид за изчисляване на gcd от списък - python, best-common-divisor

Използване на алгоритъма на Python 3 и Euclid за изчисляване на gcd на списък - python, най-често срещан делител

Опитвам се да използвам алгоритъма на Евклидизчисляване на gcd на списък с помощта на Python 3. Въпреки това, получавам грешка "TypeError: неподдържан тип операнд за%:" NoneType "и" int "". Проверих навсякъде, но все още не мога да намеря какво не е наред с моя код. Ето моя код,

# To get the gcd of a list
def gcd(numbers):
m = numbers[0]
for i in range(1, len(numbers)):
m = gcd2(m, numbers[i])
return m

# Use Euclid’s algorithm to calculate the gcd of two numbers
def gcd2(m, n):
if m % n != 0:
gcd2(n, m % n)
else:
return n

def main():
str = [44, 6, 12, 24, 4, 18]
print(gcd(str))

main()

Отговори:

2 за отговор № 1

Липсва декларация за връщане на ред 3 на gcd2. Актуализираната функция е по-долу.

def gcd2(m, n):
if m % n != 0:
return gcd2(n, m % n)
else:
return n

Надявам се това да помогне.


0 за отговор № 2
def gcd2(m, n):
if m % n != 0:
gcd2(n, m % n)
else:
return n

В if Не се връщате нищо, така че по подразбиране е None, Добавете връщане там.