/ / Erster Timer auf StackOverflow --- Probleme mit der Rekursion haben. Versuchen Sie, den Computer rekursiv die Nummer des Benutzers zu erraten - Python, Rekursion

Erster Timer auf StackOverflow --- Probleme mit der Rekursion haben. Versuchen Sie, den Computer rekursiv die Nummer des Benutzers zu erraten - Python, Rekursion

Ich habe ein wenig Probleme mit diesem Programm. Ich bin übrigens ein Neuling für Rekursion. Jedenfalls mache ich das und ich habe das Gefühl, es sollte funktionieren, aber es wird nur zu einer Endlosschleife. Fehlermeldung lautet "maximale Rekursionstiefe im Vergleich überschritten". Ich nehme einfach eine Nummer, ein oberes und unteres Limit vom Benutzer und lasse den Computer rekursiv raten. Jede Hilfe wäre sehr willkommen!

import random as rand
def recursionNum(compGuess, magicNum):
#if the number that the user inputs for the computer to
#guess is to low it multiplies the number by 2 and then subtracts 1
#if the number is to high its divided(//) by 2 and then adds 1
if compGuess == magicNum:
print("You guessed right")   #basecase
elif compGuess > magicNum:
print("Guess is", compGuess, "...Lower")
return recursionNum(compGuess //2+1, magicNum)
else:
print("Guess is", compGuess,"....Higher")
return recursionNum(compGuess *2-1, magicNum)
userNum =0
lowerLim = 0
upperLim = 0
while userNum not in range(lowerLim, upperLim):
lowerLim = int(input("What your lower limit: "))
upperLim = int(input("What is yor upper limit: "))
userNum = int(input("pick a number within your set limits:"))
compGuess = rand.randint in range(lowerLim, upperLim)
recursionNum(compGuess, userNum)

Antworten:

0 für die Antwort № 1

Zuallererst werden Sie nie etwas druckenweil die print-Anweisung nach der Rückkehr ist. Rückgabe gibt die Steuerung an den aufrufenden Bereich zurück, und Zeilen, die einer return-Anweisung folgen, werden ignoriert. Zweitens gibt es keinen Grund, Rekursion dafür zu verwenden. Eine einfache for-Schleife ist dafür viel besser geeignet. Wenn Sie nur nach einer Anwendung suchen, um die Rekursion zu üben, kann ich einen Fibonacci-Zahlengenerator vorschlagen? Es ist ein ziemlich beliebtes Beispiel für das Thema.