Python inverse entier en utilisant la récursivité
Je suis en train de travailler sur un problème qui a besoin d'inverse d'un nombre entier d'entrée sans l'aide de la liste ou de la ficelle.
Mais mon programme ne fait que retourner premiers et derniers chiffres.
def reverseDisplay(number):
if number<10:
return number
else:
return reverseDisplay(number//10)
def main():
number=int(input("Enter a number:"))
print(number%10,end='')
print(reverseDisplay(number))
main()
Il semble que la fonction d'inversion juste travaillé qu'une seule fois.
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner:
Vous pouvez également réduire le nombre de fois que vous appelez
log10
et le nombre d'opérations mathématiques à l'aide d'un imbriquée fonction récursive:Il est exécuté plusieurs fois, mais il ne renvoie plus à gauche chiffre. Il est assez facile de voir que c'est le cas, si vous envisager dans quelles circonstances le
if
sera vrai.Pour faire ce travail, vous devez l'ajouter dans les chiffres que vous avez ignoré que vous passez de la récursivité. Les ouvrages suivants, par simple virement de bord du passé de chiffres à gauche du résultat précédent. Je préfère le faire sans la conversion de chaîne de caractères, mais je ne pouvais pas venir avec une élégante façon de le faire...
Voici comment cela fonctionne... (j'ai étiqueté les lignes Im se référant à ici)
Vous pouvez le faire par le maintien d'un supplément de compte qui garde une trace de la façon dont de nombreux chiffres ont été traitées avec déjà.
Cela peut être fait à l'aide d'une fonction wrapper:
L'idée est d'utiliser le compteur de garder une trace de la façon dont beaucoup de zéros de fin pour ajouter le numéro actuel de faire le plus de travail.
Suivi par le biais de ce serait:
En vertu de l'hypothèse, que la récursivité n'était pas une obligation (toujours une bonne idée de le remplacer par itération si facilement possible), je suggère le code ci-dessous. J'ai changé le nom de la fonction pour des raisons de clarté et d'éviter la surenchère de puissance et logarithme des opérations dans d'autres suggestions.
Edit: C'est une solution de travail.
Résultat:
C'est ce que j'ai fait
Cela devrait fonctionner : vérifié sur Python3
Peu modifiée version: