Код, приведенный ниже, работает только правильно для некоторых входов, таких как gcdIter (2, 12), который дает мне правильный выход, т. Е. 2, но если я даю ввод как gcdIter (220,120), он дает мне 110 вместо из 20. Мне нужна помощь в логике.GCD без использования рекурсии
def gcdIter(a, b):
'''
a, b: positive integers
returns: a positive integer, the greatest common divisor of a & b.
'''
if a<b:
while a>0:
if b%a==0:
print('the gcd is : '+''+str(a))
break
else:
a -= 1
else:
while b>0:
if a%b==0:
print('the gcd is :'+''+str(b))
break
else:
b -= 1
Извините, но ваш код не имеет смысла для меня. В чем смысл 'a - = 1'? –
Добро пожаловать в переполнение стека! Похоже, вам нужно научиться использовать отладчик. Пожалуйста, помогите нам с некоторыми [дополнительными методами отладки] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Если у вас все еще есть проблемы после этого, пожалуйста, не забудьте вернуться с более подробной информацией. –
Я просто уменьшаю значение a и проверяю его снова для получения правильного ответа. –