取一个char并从char打印到'a'并反转它应该是递归的

时间:2010-12-06 22:51:19

标签: python recursion 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

4 个答案:

答案 0 :(得分:3)

如果必须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

答案 1 :(得分:3)

无论何时设计递归函数,首先要问自己的问题是:算法如何终止?即,什么是基本情况?在您的示例中,算法应在打印字母“a”后停止打印字符,这是您的基本情况。

接下来,您必须询问如何从您的起始案例到达基本案例。这很简单:你想打印前一个字符,直到你到达基本案例。 (一个字符本质上只是一个整数,这意味着你想从字符中减去一个并将其打印成字符串。)

把所有这些放在一起,我得到了:

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)在交互式解释器中查找它们。)

答案 2 :(得分:0)

递归:

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

答案 3 :(得分: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 '