關於遞迴寫法的精妙記錄

2021-07-03 12:22:25 字數 543 閱讀 9999

之前對遞迴的了解就限制於  n! 之類的用法,在學習python的過程中,接觸到了關於漢諾塔的移動的遞迴介紹,覺得遞迴實在是神奇。這種思想的迸發我希望能記錄下來,並激勵。

def move(n, a, b, c):

if n ==1:

print a, '-->', c

return

move(n-1, a, c, b)

print a, '-->', c

move(n-1, b, a, c)

move(4, 'a', 'b', 'c')

程式語言是 python

這裡對圓盤的移動的分析是: 如果a有n個圓盤,可以把a看做是 n 和 (n-1)的集合,現在就是要把 (n-1) 移到b上面,再把a的n移到c上。在之後就以b為a(即為起始柱子),a為b (即為備用柱子)。 問題變成了b看做(n-1)和(n-2)的集合,現在把(n-2)移到a,再把b中的(n-1)移到c上。此時 a b 狀態返回開始狀態繼續迴圈。

遞迴思想有點不同於我的常規想法,僅以記錄,看到的時候能夠提醒自己開拓思維。

關於遞迴的記錄

由於專案的原因接觸了三種資料庫,分別是oracle mysql postgresql,在此記錄一下三種資料庫遞迴查詢的用法 以查詢某節點下所有子節點為例 1 oracle 有自帶的遞迴函式,一般最上級我都不用遞迴,直接查全部 select t.from sys postorg t start wit...

關於遞迴的使用記錄

此篇部落格 於極好的文章,解決了遞迴入門的疑難點。何為遞迴?程式反覆呼叫自身即是遞迴。我自己在剛開始解決遞迴問題的時候,總是會去糾結這一層函式做了什麼,它呼叫自身後的下一層函式又做了什麼 然後就會覺得實現乙個遞迴解法十分複雜,根本就無從下手。相信很多初學者和我一樣,這是乙個思維誤區,一定要走出來。既...

遞迴的寫法

foreach datarow dr0 in dt.rows tn1 new treenode tn1.nodes.add tn0 tn1 tn0 tn3 tn1 method tn1 treeview1.nodes.add tn1 private void method treenode tn1 ...