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

发布于 2024-10-06 11:49:40 字数 272 浏览 3 评论 0原文

这是我到目前为止所写的,但它不是正确的输出

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

this is what Ii wrote so far but it is not the correct output

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

    return

I want the this output:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

牵你手 2024-10-13 11:49:40

每当你设计一个递归函数时,你首先要问自己的是:算法如何终止?即,基本情况是什么?在您的示例中,算法应该在打印字母“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) 在交互式解释器中查找它们。)

Whenever you design a recursive function, the first thing you want to ask yourself is: how does the algorithm terminate? I.e., what's the base case? In your example, the algorithm should stop printing characters after the letter 'a' is printed, so that's your base case.

Next, you have to ask how to get to the base case from your starting case. That's pretty easy: you want to print the previous character until you reach the base case. (A character is essentially just an integer, so that means you want to subtract one from the character and print it as a string.)

Putting that all together, I got:

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

print_reverse('h')

(If you don't know what the Python functions ord and chr do, look them up in the interactive interpreter using help(ord) and help(chr).)

笑咖 2024-10-13 11:49:40

如果函数必须递归,则应将函数设计为调用自身:

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

Your function should be designed to call itself if it has to be 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
蓝梦月影 2024-10-13 11:49:40

递归:

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

Recursive :

def character(char):
    print(char)
    character(chr(ord(char)-1))
    return
屋顶上的小猫咪 2024-10-13 11:49:40
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 '
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 '
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文