'''
问题描述:
给定一个字符串,返回它的倒序字符串。
例如:输入 "abc",返回 "cba"。
'''
'''
1.问题: 给定一个字符串,返回它的倒序字符串。
1.1 明确问题: Python条件下,输入/给定一个字符串,返回它的倒序字符串.
1.2 问题原因:递归函数/反转字符串的规律/与递归的关联性/设计函数步骤/输入值/返回值类型:str
1.2.1 反转字符串的递归规律
1.元素:字符串/相连/递归定义/
字符串是左右相连
递归定义--拆解成:操作+子问题的结果
结合: 字符串拆解:第一个字符串+(第二部分的字符串) 形成递归关系 ,基准情形就是 n=1时 .最后一个字符串.
1.1字符串的属性:
增查改删
索引
切片
2.拆解规律
n= a 时 , =a 操作:不动
n= a,b时 , = b,a
n= a, b, c , = c ,b a
n= n个时 , 末尾字符+上一步结果
1.结构相同的'操作': 末尾字符在第一位(通过切片) a= a[-1] + 切片[:-1]
2.结构相同的'子问题结果': 取排序[1:]的
3.组合: 末尾字符在第一位 + 调用自身(收敛的参数)
2.设计递归函数
2.1 明确函数功能
递归函数
传入参数 str
基准情形
返回值: 组合 = 结构相同的操作 + 调用自身函数(收敛参数)
2.2 基准情形:
递归到最后一个时,if条件成立
len(a) == 1:
2.3 寻找递归关系
操作: 末尾字符在第一位
子问题结果: 取排序0到-2的,把末尾移到第一位
组合: 末尾字符在第一位 + 调用自身
2.4 验证收敛性: 每一次调用会不断收敛,直到基准情形时停止.
返回值: 操作+调用自身(收敛) 必须组合在一起.
'''
def rev(a):
"""
字符串的反转
:param a: str
:return: str,字符串的倒序
"""
if len(a) == 1 and type(a) == str:
return a
elif len(a) >= 2 and type(a) == str:
a = a[-1] + a[:-1] # 结构相同的操作
l = a[0] + rev(a[1:]) # 组合 : 结构相同的操作 + 子问题的结果(调用且收敛)
return l # 返回值:一定是'组合的结果'
print(rev('123123'))
# 另一种写法
def rev2(a):
if len(a) <= 1:
return a
return rev(a[1:]) + a[0] # 关键:递归反转剩余部分,再拼接第一个字符
print(rev2('123456')) # 输出 '654321'
# 代码方式 : 把末尾字符放到第一位,且不改变长度
s = '123'
s = s[-1]+s[:-1]
print(s)
![PixPin_2026-02-03-练习5]()