[英]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.