Цикл не прерывается
Написал игру "Компьютер угадывает число" по заданному пользователем интервалу (двоичный поиск). Столкнулся, что когда пользователь вводит "Равно" цикл все равно не заканчивается, в чем может быть причина?
A=int(input('Введите первое число интервала:'))
B=int(input('Введите второе число интервала:'))
X=0
count=0
ans='0'
def func(A,B,count,ans):
while ans!='Равно':
mid=A+(B-A)//2
X=mid
print('Ваше число больше: {}?'.format (X))
ans=input('Да/Нет/Равно?')
if ans=='Да':
A=X
count+=1
func(A,B,count,ans)
elif ans=='Нет':
B=X
count+=1
func(A,B,count,ans)
else:
ans='Равно'
print('Ваше число {}. Спасибо за игру!'.format(X))
A=B
func(A,B,count, ans)
print('Число попыток: {}'.format(count))
Ответы (1 шт):
Автор решения: Khetag Abramov
→ Ссылка
Строчка кода:
func(A,B,count,ans)
Явно лишняя, у вас получается не двоичный поиск, а непонятная рекурсивная функция, которая каждый раз запускается заново для каждого нового отрезка.
Либо убирайте цикл while() и ставьте условие на "Равно", либо уберите рекурсию из функции.
Замечу, что алгоритм никогда не предскажет число B (правую границу). В инициализации отрезка увеличьте B на 1.