2010-12-06 59 views
0

c'est ce que Ii a écrit jusqu'à présent, mais il est pas la sortie correcteprendre char et imprimer de char à « un » et inverser doit être récursive

def characters(char): 
    numb=ord(char) 
    while numb>ord('a'): 
     print chr(numb), 
     numb=numb-1 

    return 

Je veux que cette sortie:

characters('h') 
    g f e d c b a 
+0

Est-ce que c'est ce devoir? – nmichaels

+0

Quel résultat attendez-vous? –

+0

@Nathon: Non ce n'est pas ...... Je suis étudiant pour un examen ,,: ((( – user531225

Répondre

3

Chaque fois que vous créez une fonction récursive, la première chose que vous voulez vous poser est la suivante: comment l'algorithme mettre fin? Soit, quel est le cas de base? Dans votre exemple, l'algorithme devrait arrêter d'imprimer des caractères après l'impression de la lettre «a», c'est donc votre cas de base.

Ensuite, vous devez demander comment accéder au cas de base à partir de votre cas de départ. C'est assez simple: vous voulez imprimer le caractère précédent jusqu'à ce que vous atteigniez le scénario de base. (. Un caractère est essentiellement juste un entier, de sorte que signifie que vous voulez soustraire un du caractère et de l'imprimer comme une chaîne)

Mettre tout cela ensemble, je suis arrivé:

def print_reverse(ch): 
    print ch, 
    if ch > 'a': 
     print_reverse(chr(ord(ch)-1)) 
    else: 
     print # New line 

print_reverse('h') 

(Si vous ne savent pas ce que les fonctions Python ord et chr font, les chercher dans l'interpréteur interactif utilisant help(ord) et help(chr).)

+0

thx ... ça m'a vraiment aidé ... – user531225

0

récursive:

def character(char): 
    print(char) 
    character(chr(ord(char)-1)) 
    return 
+0

ok ... vérifier la dernière condition ... tout comme Frederic fait ... – Matthieu

3

Votre fonction doit être conçue pour c tout lui-même si elle doit être recursive:

def recurse_chars_down(char): 
    if char <= 'a': 
     print char 
    else: 
     print char, 
     recurse_chars_down(chr(ord(char) - 1)) 

>>> recurse_chars_down('h') 
h g f e d c b a 
0
def characters(char): 
    if char == 'a': 
     return '' 
    next_char = chr(ord(char)-1) 
    return next_char+' '+characters(next_char) 

>>> characters('h') 
'g f e d c b a '