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

 

++++++++++++++++++++++++++++++++++++++

題目出處:編程語言入門經典100例【Python版】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM