1. 程式人生 > >資料結構的筆記 1

資料結構的筆記 1

遞迴

遞迴與歸納法密切相關

1.先判斷問題能否分成 f(n)=exp(n...f(n-i))  漢諾塔問題

注意邊界條件

2.遞迴一般有遞迴模型 :遞迴出口 f(s)=m; 遞迴體 f(sn)=g(f(si),f(si+1)...Cj,Cj+1...) (不一定和sn-1有關) 

3.遞迴深度指遞迴樹的深度而非呼叫次數

4.一些技巧:vis陣列(記憶化) 自頂向下 ...

5.尾遞迴可以轉化為迴圈

 

其他

1.inline 把func直接放到呼叫的函式裡copy。問題是造成程式碼膨脹

2.記憶化很常用

if(vis)return 

else

3.全排列問題

     1.一般方法:遞迴   注意有重複元素時不要直接swap  ,增加一個if(swap)判斷是否要交換

      2.字典序方法