Toutes mes excuses si des questions similaires ont été posées, mais je n'ai rien pu trouver quelque chose pour résoudre mon problème. J'ai écrit une simple pièce de code pour la séquence Collatz dans Python qui semble fonctionner bien pour des nombres pairs, mais se bloque dans une boucle infinie lorsqu'un nombre impair est entré.
Je n'ai pas été capable de comprendre pourquoi C'est ou une façon de sortir de cette boucle afin que toute aide soit grandement appréciée. p>
4 Réponses :
Votre fonction manque de code> renvoie code>, donc par défaut, il renvoie Vous semblez vouloir faire un appel récursif, mais vous utilisez également un Lorsque vous recouvrez, vous ne em> avez pas em> pour réaffecter une variable, vous pouvez choisir de mettre l'expression dans l'appel, comme ceci: P > Aucun code>. Vous pouvez éventuellement souhaiter définir la fonction afin qu'il retourne le nombre d'étapes de
1 code> le numéro d'entrée est. Vous pouvez même choisir de cache de tels résultats.
pendant code> boucle. Choisissez un ou l'autre. P>
if number % 2 == 0:
collatz(number / 2)
elif ...
J'ai simplifié le code requis pour trouver combien d'étapes il faut pour un numéro pour se rendre à zéro à la suite de la théorie de la conjecture Collatz. J'espère que cela vous aide! P> p>
ci-après est mon extrait de code et cela a fonctionné parfaitement
Voici mon interprétation de l'affectation, cela gère des nombres négatifs et des intrants non entiers répétés utilisent également des cas. Sans nidifier votre code dans une boucle réelle tandis que, le code échouera sur des cas d'utilisation non entiers répétés.
def collatz(number): if number % 2 == 0: print(number // 2) return(number // 2) elif number % 2 == 1: result = 3 * number + 1 print(result) return(result) # Program starts here. while True: try: # Ask for input n = input('Please enter a number: ') # If number is negative or 0, asks for positive and starts over. if int(n) < 1: print('Please enter a positive INTEGER!') continue #If number is applicable, goes through collatz function. while n != 1: n = collatz(int(n)) # If input is a non-integer, asks for a valid integer and starts over. except ValueError: print('Please enter a valid INTEGER!') # General catch all for any other error. else: continue