python學習記錄 遞迴

2021-08-21 15:58:41 字數 1012 閱讀 6005

遞迴(recursion),在數學與電腦科學中,是指在函式的定義中使用函式自身的方法。

在使用遞迴時,需要注意以下幾點:

注意:切勿忘記遞迴出口,避免函式無限呼叫。

使用遞迴實現階乘計算:

現在,使用迭代來實現。

使用迭代來實現漢諾塔遊戲

漢諾塔主要是有三個塔座x,y,z,要求將從小到大編號為 1,2.....n 的圓盤從x移動到塔座z上,要求

1、每次只能移動乙個圓盤

2、圓盤可以插到x,y,z中任一塔座上

3、任何時候不能將乙個較大的圓盤壓在較小的圓盤之上

4、初始:所有圓盤都在 x 塔座,並且最大的圓盤在最底部,然後是次大的

5、結束:所有圓盤都在 z 塔座,並且最大的圓盤在最底部,然後是次大的 

遞迴演算法:

n == 1時,把盤1從x移動到z

當n > 1時

1、將n-1個圓盤(每次移動乙個)從x移動到臨時塔y

2、將盤n從x移動到目的地z

3、將n-1個圓盤(每次移動乙個)從臨時塔y移動到目的塔z

(實際理解為,每次移動盤子,都是將盤子從x移動到z。所以將n-1個圓盤從x移動到臨時塔y,這一步操作中將y理解為z,即呼叫本身時傳入的y為z,所以盤子是從x移動到z;同理將n-1個盤子從臨時塔y移動到z時,理解為y為x,即呼叫本身是傳入的y為x,所以盤子還是從x移動到z)

結果如下:

優點:缺點:

學習記錄 遞迴和堆疊

今天在學習遞迴和堆疊的知識 1 中,使用堆疊進行求和運算過程中遇到了 deque iterator not dereferencable 問題 include stdafx.h include include using namespace std 遞迴求和函式 int sum1 int value...

python學習記錄

python 3 整除,複數表示,slice,range,pass關鍵字,函式用引數名呼叫,函式的 arg和 arg,預設引數,unpacking argument lists,sequence 型別 list,set tuple,dictionary,queue,stack loop相關 enum...

python學習記錄

python函式記錄 修飾符作用就是表示 下面的值或者函式作為 後面函式的引數 返回值由 後面的函式返回 map 接收乙個函式和乙個序列,然後保留函式返回的結果的序列 reduce 接收乙個函式和乙個序列 函式結果為乙個值,運算過程就是從序列的第乙個值開始傳給函式,返回結果再次傳入函式,直到最後得到...