您好,我正在研究二进制搜索树。该程序说明自己。我对是否应该将函数写成一半的数字感到困惑。我只是对这一切的逻辑感到困惑。如果可以的话,我将不胜感激。
list_of_numbers = [i for i in range(1,101)]
print("THIS IS YOUR LIST OF NUMBERS", list_of_numbers)
lowest_number = 1
highest_number = len(list_of_numbers)-1
mid = (len(list_of_numbers)) / 2
print("IS THIS YOUR NUMBER???:", mid)
number_of_guesses = 0
while lowest_number <= highest_number:
print('Is your number: ', mid)
print('please enter "<,>, or ="')
first_guess = input("???:::::::::")
first_answer = first_guess
print(first_answer)
equals = "="
greaterthan = ">"
lessthan = "<"
if first_answer == equals:
print('Great JOB I GOT YOUR NUMBER ON THE FIRST TRY')
break
if first_answer == lessthan:
print('The number is now between 49-1, half it.')
break
elif first_answer == greaterthan:
print('The number is now between 51-100')
break
else:
print('Type one of the answers')
break
number_of_guesses = number_of_guesses + 1
答案 0 :(得分:0)
您不需要简单地除以2的函数。对于二进制搜索,您应该做的是跟踪数字的上限和下限。那么您可以将猜测计算为(upper + lower) / 2
。如果玩家说猜测过高,则将当前猜测的上限设置为上限。如果他们说猜测太低,则将当前猜测的下限设置为。重复该操作,直到找到正确的数字为止。
顺便说一句,这实际上不是搜索树,只是基本的二进制搜索。搜索树将把所有可能的数字存储在连接的树形图中,然后使用它来搜索答案,这是没有做的。