Цикл не прерывается

Написал игру "Компьютер угадывает число" по заданному пользователем интервалу (двоичный поиск). Столкнулся, что когда пользователь вводит "Равно" цикл все равно не заканчивается, в чем может быть причина?

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.

→ Ссылка