1. 程式人生 > 程式設計 >Python遞迴函式特點及原理解析

Python遞迴函式特點及原理解析

1 遞迴函式的特點

特點

一個函式 內部 呼叫自己

函式內部可以呼叫其他函式,當然在函式內部也可以呼叫自己

程式碼特點

函式內部的 程式碼 是相同的,只是針對 引數 不同,處理的結果不同

當 引數滿足一個條件 時,函式不再執行

這個非常重要,通常被稱為遞迴的出口,否則 會出現死迴圈!

示例程式碼

def sum_numbers(num):
  print(num)
  # 遞迴的出口很重要,否則會出現死迴圈
  if num == 1:
    return
  sum_numbers(num - 1)
sum_numbers(3)

Python遞迴函式特點及原理解析

2 遞迴案例 —— 計算數字累加

需求

定義一個函式 sum_numbers

能夠接收一個 num 的整數引數

計算 1 + 2 + ... num 的結果

def sum_numbers(num):
​  if num == 1:
    return 1
    # 假設 sum_numbers 能夠完成 num - 1 的累加
  temp = sum_numbers(num - 1)
​  # 函式內部的核心演算法就是 兩個數字的相加
  return num + temp
​print(sum_numbers(2))

Python遞迴函式特點及原理解析

#  
# 練習
#  建立一個函式,用來檢查一個任意的字串是否是迴文字串,如果是返回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遞迴函式特點及原理解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。