Python 遞歸函數
如果一個函數體直接或者間接調用自己,那么這個函數就稱為遞歸函數.也就是說,遞歸函數體的執行過程中可能會返回去再次調用該函數.在python里,遞歸函數不需要任何特殊的語法,但是它需要付出一定的努力去理解和創建.
我們會以一個簡單的例子開始:寫一個函數求一個自然數中所有數字的和.在設計遞歸函數的時候,我們會尋找能把問題分解成簡單的問題的方法.在這道題中,運算符%和//可以用來把一個數分成兩部分:最低位和不包含最低位數字兩部分.

18117的數字和為:1+8+1+1+7=18.這樣我們就可以分割這個數.把這個數分割成最低位7和不包含最低位數字的和1+8+1+1=11.這種分割方法給我們提供了一個算法:通過最低位n%10與n//10的數字之和相加來計算數n的數字之和.這種方法存在特殊情況:如果一個數只有一位,那么它的數字之和就是它本身.這個算法可以用遞歸函數實現.
def sum_digit(n): """return the sum of the digit of positive integer n.""" if n < 10: return n else: last = n % 10 all_but_last = n // 10 return sum_digit(all_but_last) + last
函數sum_digit的定義是完整和正確的,即使sum_digit函數在自身的函數體里被調用.
這樣求一個數的數字之和的問題就被分解成了兩部分:求除去最低位部分數字之和,然后加上最低位.這兩個步驟全都比原問題要簡單.這個函數是遞歸的,因為第一步的問題和原問題是相同類型的.也就是說,sum_digit的確實是我們需要去實現自然數數字求和的函數.

我們可以理解這個遞歸函數是怎樣使用計算環境模型成功應用的.它 不需要任何新的規范.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選