【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] 用負數則表示反着切,正好符合本題的逆序復制,太巧妙了!
++++++++++++++++++++++++++++++++++++++