2024年NOC中小学信息技术创新大赛Python初中组复赛习题——字符串反转

【题干描述】

编写一个Python程序,使用递归函数实现字符串的反转。例如,函数接受一个字符串"hello"作为参数,返回反转后的字符串"olleh"。

【程序要求】

1、程序开始,提示用户输入一个字符串

2、如果字符串的长度小于或等于1,函数直接返回字符串本身。

3、如果字符串的长度大于1,函数直接返回反转后的字符串。

4、打印出反转后的字符串的相关信息

【示例1】

输入:请输入一个字符串:hello

输出:反转后的字符串为:olleh

【示例2】

输入:请输入一个字符串:h

输出:反转后的字符串为:h


【主要概念】

递归函数,如果一个函数在内部调用自身本身,这个函数就是递归函数。

视频讲解:《从Scratch进阶到Python—基础篇》第十章递归函数【视频】

【基本思想】

解决字符串反转的问题的基本思想是把字符串看做一个递归对象。长字符由较短字符组成,每个小字符也是一个对象。假如把一个字符串看成仅有两部分组成首字符和剩余字符,如果将剩余字符串与首字符交换,就完成了反转整个字符串。


【参考答案】


def f(s):
    if len(s) <=1:
        return s
    else:
        return f(s[1:]) + s[0]
str = input("请输入一个字符串:")
print(f(str))


【代码解释】

这段代码定义了一个递归函数 f(s),用于翻转输入的字符串。

函数的参数是字符串 s,代表输入的字符串。

函数内部的逻辑如下:

首先,检查输入的字符串s的长度是否小于等于1。如果是空字符串或一个字符,则直接返回字符串本身。如果不是空字符串,则进入 else 分支。

在 else 分支中,函数会递归调用自身f,传入除第一个字符之外的子字符串 s[1:],并将其结果与第一个字符 s[0] 拼接。

递归调用的作用是不断去除字符串的第一个字符,直到字符串变为一个字符。

当字符串变为只有字符时,递归终止,开始进行逐层返回,每一层返回时都会将前一层的结果与当前字符拼接,直到最后返回完整翻转后的字符串。

本站内容未经许可,禁止任何网站及个人进行转载。