python Traceback(最近一次调用最后一次):

时间:2016-03-15 21:15:42

标签: python search binary binary-search-tree binary-search

我正在尝试创建一个猜谜游戏,但我遇到了一些错误,有人可以帮助我吗?

A = A + [i]
# Define two variables which will be the end point of
# the search span 
mini = 0 
maxi = len(A) - 1 
stepcounter = 1 
find = int(input("Think of a number between 1 and 1000")) 
def guessgame(find, A, mini, maxi, stepcounter): 
    # This calculates the value of the midpoint element 
    # in the list guess = (A[mini] + A[maxi]) // 2 
    if guess == find: 
        return 
        print("You think of", guess, "I did this in", stepcounter, "number of steps") 
    elif guess < find: 
        mini = guess 
        stepcounter = stepcounter + 1 
        guessgame(find, A, mini, maxi, stepcounter) 
    elif guess > find: 
        maxi = guess 
        stepcounter = stepcounter + 1 
        guessgame(find, A, mini, maxi, stepcounter) 
    else: 
        return 
        print("Not in array") 
        guessgame(find, A, mini, maxi, stepc

ounter)

我的错误是

traceback most recent call last:
line 34 guessgame(find, a, mini,maxi, supercounter)

File "C:/Users/Acer VN7/PycharmProjects/untitled1/py.py", line 20, in guessgame
if guess == find:
RecursionError: maximum recursion depth exceeded in comparison

1 个答案:

答案 0 :(得分:0)

您遇到的主要问题是您将猜测与其位置混淆。您将猜测计算为 A 中值的中点,然后将mini或maxi设置为 guess ,而不是其位置。我希望这种混乱可以推动你对二进制搜索范围的猜测,并获得无限递归。

要调试此问题,请添加一些print语句以跟踪执行情况。例如,函数的第一行应该是

print find, mini, maxi

然后,当您计算猜测并移动一个端点时,请在离开例程之前打印出这些值。

您似乎省略了将值放入 A 的代码,因此我完全不确定其中的内容。

除此之外,还存在结构性问题。您无法在 if else 分支中返回后获取代码。您根本无法进入其他分支,因为前三个分支涵盖了所有可能性(排除中间的法律)。

这会让你感动吗?

相关问题