Опитвам се да използвам алгоритъма на Евклидизчисляване на 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
, Добавете връщане там.