Python练习题 022:用递归函数反转字符串
【Python练习题 022】 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
---------------------------------------
又来一个递归题!不过,有了【Python练习题 021:递归方法求阶乘】这道题的经验,还是依着葫芦画个瓢,倒也不难。代码如下:
str = input('请输入若干字符:') def f(x): if x == -1: return '' else: return str[x] + f(x-1) print(f(len(str)-1))
输出结果如下:
请输入若干字符:abcdefg
gfedcba
如果不用递归函数呢?那就简单多了:先把输入的字符串转为列表,逆序重排,然后给 join() 在一起就可以上桌了。代码如下:
str = list(input('请输入若干字符:')) str.reverse() print(''.join(str))
可能是我现在的水平太低了,还体会不到递归函数的强大之处。路漫漫啊……
【2016-10-18 更新】---------------------------------------------------
感谢 codegay 的指教,这题如果不是强制要求用递归函数,其实还有一个非常简便的方法,就是切片!先来感受一下这极简之风味,史上最简方法:
str = input('请输入若干字符:') print(str[::-1])
就是这个“切片”功能!一般 str[:] 就可以复制 str 所有字符,等同于 str[::1],数字“1”表示步长,若为“2”,则 'abcdef'[::2] = 'ace' 。而 str[::-1] 用负数则表示反着切,正好符合本题的逆序复制,太巧妙了!
++++++++++++++++++++++++++++++++++++++