描述:
样例输入: 5 abcde 样例输出: ebcda edcba edcba
分析:
重点是找规律,我们以 9 abcdefghi为例:length=9 i的序号 交换的序号 交换后i的值 i=9 0<--->8 i=7 i=7 1<--->7 i=5 i=5 2<--->6 i=3 i=3 3<--->5 i=1 i=1 判断返回 由此可见,我们要交换的数组序号的普遍计算方法: (length-i)/2 <----> length-1-(length-i)/2 不要问我怎么来的,根据上表找到的规律
代码:
def trans(st,i=None,): if i==None: i=len(st) if i==1 or i==0:#考虑到奇数个或者偶数个 print() for echo in st: print(echo,end='') return length=len(st) #虽然st长度不变,但下次递归没传此参数 st[length-1-int((length-i)/2)],st[int((length-i)/2)]=st[int((length-i)/2)],st[length-1-int((length-i)/2)] for echo in st: print(echo,end='') print() trans(st,i-2) command=input().split() trans(list(command[1]))