天天看點

遞歸的練習課程 | Python從入門到精通:高階篇之十二

檢視上一節:遞歸的基本用法

上節課留了兩個練習,這節課給大家講一下,同時鞏固一下遞歸的用法。

練習1、建立一個函數 power 來為任意數字做幂運算 n

*

*

i

用資料10^5舉例說明一下:

#   10 ** 5 = 10 * 10 ** 4
#   10 ** 4 = 10 * 10 ** 3
#   ...
#   10 ** 1 = 10           

代碼展示:

def power(n , i):
    '''
        power()用來為任意的數字做幂運算

        參數:
            n 要做幂運算的數字
            i 做幂運算的次數
    '''
    # 基線條件
    if i == 1:
        # 求1次幂
        return n
    # 遞歸條件
    return n * power(n , i-1)
print(power(8,6))               

執行結果為:

遞歸的練習課程 | Python從入門到精通:高階篇之十二

練習2、建立一個函數,用來檢查一個任意的字元串是否是回文字元串,如果是傳回True,否則傳回False。

回文字元串,字元串從前往後念和從後往前念是一樣的。

舉例說明:

#       abcba
#   abcdefgfedcba
#   先檢查第一個字元和最後一個字元是否一緻,如果不一緻則不是回文字元串
#       如果一緻,則看剩餘的部分是否是回文字元串
#   檢查 abcdefgfedcba 是不是回文
#   檢查 bcdefgfedcb 是不是回文
#   檢查 cdefgfedc 是不是回文
#   檢查 defgfed 是不是回文
#   檢查 efgfe 是不是回文
#   檢查 fgf 是不是回文
#   檢查 g 是不是回文           
def hui_wen(s):
    '''
        該函數用來檢查指定的字元串是否回文字元串,如果是傳回True,否則傳回False

        參數:
            s:就是要檢查的字元串
    '''
    # 基線條件
    if len(s) < 2 :
        # 字元串的長度小于2,則字元串一定是回文
        return True
    elif s[0] != s[-1]:
        # 第一個字元和最後一個字元不相等,不是回文字元串
        return False    

    # 遞歸條件    
    # 用切片檢查除去第一個和最後一個字元後的新字元串
    return hui_wen(s[1:-1])

print(hui_wen('abcdefgfedcba'))               
遞歸的練習課程 | Python從入門到精通:高階篇之十二

即,‘abcdefgfedcba’為回文字元串。

也可以合并遞歸條件,但是不友善閱讀,不建議使用,了解即可。

def hui_wen(s):
#     '''
#         該函數用來檢查指定的字元串是否回文字元串,如果是傳回True,否則傳回False

#         參數:
#             s:就是要檢查的字元串
#     '''
     # 基線條件
    if len(s) < 2 :
        # 字元串的長度小于2,則字元串一定是回文
        return True
     # 遞歸條件    
     return s[0] == s[-1] and hui_wen(s[1:-1])
print(hui_wen('abcdefgfedcba'))               

點選檢視配套視訊教程

擷取更多内容,請訂閱

Python學習站

官方技術圈!