2010-12-06 6 views
0

再帰的である必要があり、これはIiは、これまでに書いたものですが、それは私がこの出力を望む正しい出力文字を取ると「A」へのcharからプリントアウトし、逆にそれが

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

    return 

ではありません。

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

ですか? – nmichaels

+0

どのような出力を期待していますか? –

+0

@Nathon:そうではありません......私は試験のために勉強しています,,,((( – user531225

答えて

3

あなたは再帰関数を設計するたび、あなたは自分自身をお願いしたいと思います最初の事はある:どのようにアルゴリズムは終了していますか?基本的なケースは何ですか?あなたの例では、アルゴリズムは、文字 'a'が印刷された後に文字の印刷を停止する必要があります。

次に、あなたの最初のケースからベースケースに到達する方法を尋ねる必要があります。これは簡単です:前の文字をベースケースに達するまで印刷します。 (。文字は基本的にちょうど整数であるので、それはあなたがキャラクターから1を減算し、文字列として印刷すること)

は、そのすべて一緒に入れて、私が得た:

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

print_reverse('h') 

を(あなたの場合Python関数ordchrが何をするか分からない、help(ord)help(chr)を使用して対話インタプリタでそれらを検索してください。)

+0

thx ...それは本当に助けになりました... – user531225

0

再帰:

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

ok ...最新の状態をチェックする...ちょうどのようにフレデリックは... – Matthieu

3

あなたの関数は、Cに設計する必要がありますそれは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 ' 
関連する問題