[英]python Traceback (most recent call last):
我正在尝试创建一个猜谜游戏,但遇到一些错误,有人可以帮助我吗?
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
猎人)
我的错误是
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
您遇到的主要问题是将猜测与其位置混淆。 您将猜测计算为A中值的中点,但随后将mini或maxi设置为guess ,而不是其位置。 我希望这种混淆会使您的猜测超出二进制搜索范围,并且您将获得无限递归。
要调试此问题,请添加一些打印语句以跟踪执行。 例如,函数的第一行应类似于
print find, mini, maxi
然后,当您计算猜测并移动一个端点时,请在退出例程之前打印出这些值。
您似乎已经省略了将值放入A的代码,所以我完全不确定其中有什么。
除此之外,还存在结构性问题。 返回 if和else分支后,您将无法获得代码。 您根本无法进入else分支,因为前三个分支涵盖了所有可能性(排除中间法则)。
这会让你动起来吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.