如图,为什么该代码输入:唐诗宋词,输出结果是:词宋诗唐,而不是:词唐诗宋,reverse(s[1:])指的不就是:诗宋词,这三个字吗?
这个是个递归函数,每次把第一个字符放到最后面。
你说的诗宋词只是第一次递归的结果,但是词宋诗唐是最后的结果
reverse(s[1:])把“诗宋词”翻转得“词宋诗”,然后加s[0],即“唐”结果等于=诗宋词+唐=词宋诗唐
这是反转字符串的递归算法,不是系统函数或方法reversed()或.reverse():
比如换个函数名称:
>>> def rev(s):
if s:
print(s[0],s)
return rev(s[1:])+s[0]
return s
>>> rev('123456789')
1 123456789
2 23456789
3 3456789
4 456789
5 56789
6 6789
7 789
8 89
9 9
'987654321'