题目![在这里插入图片描述](https://img-blog.csdnimg.cn/31c2a5229bb44fbdbda75e5159d05848.png)
递归逆序
用了三种方法实现,都差不多,只是遍历顺序不一样,可以拿其中一个出来用即可。
# 1. 用递归的方法,求用户输入的字符串的内容的逆序,例如我输入:abcde,输出:edcba
userInput = input("请输入字符串:")
# 方法一:递归之 从后往前把最后一个元素依次放到开头
def reverseString_one(userInput):
if len(userInput) == 1:
return userInput
else:
return userInput[-1] + reverseString_one(userInput[:-1])
print(reverseString_one(userInput))
# 方法二:递归之 从前往后把第一个元素依次放到最后
def reverseString_two(userInput):
if len(userInput) == 1:
return userInput
else:
return reverseString_two(userInput[1:]) + userInput[0]
print(reverseString_two(userInput))
# 方法三:递归之 前后元素交换
def reverseString_three(userInput):
if len(userInput) == 1:
return userInput
else:
return userInput[-1] + reverseString_three(userInput[1:-1]) + userInput[0]
print(reverseString_three(userInput))
大小写互换
最基础的一个实现方法,没什么高端用法,就体现递归思想即可。
修改了下,老师上节课下课前说要用ASCII码转换实现,题目却不注明,还是老样子要猜老师的意思才算完成。
使用方法一即可。
# 编写一个函数,对参数进行大小写转换
# 如果是大写转换成小写,如果是小写转换成大写,非英文字符不转换
# 方法一:递归转换 - ASCII码转换
def convert_ascii(chs):
source = ord(chs[0])
if 65 <= source <= 90:
target = chr(source + 32)
elif 97 <= source <= 122:
target = chr(source - 32)
else:
target = chr(source)
if len(chs) == 1:
return target
else:
return target + convert_ascii(chs[1:])
# 方法二:递归转换 - 内置方法转换
def convert_api(s):
if s == '':
return ''
elif s[0].isupper():
return s[0].lower() + convert_api(s[1:])
elif s[0].islower():
return s[0].upper() + convert_api(s[1:])
else:
return s[0] + convert_api(s[1:])
if __name__ == '__main__':
userInput = input("请输入字符串:")
if userInput.strip() == "":
print("你输入的内容为空!")
else:
print("方法一(递归转换 - ASCII码转换):" + convert_ascii(userInput))
print("方法二(递归转换 - 内置方法转换):" + convert_api(userInput))