这是我到目前为止写的,但它不是正确的输出
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 :(得分: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函数ord
和chr
的作用,请使用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 '