我用的是人民郵電出版社的資料結構。
書上剛開始給了階乘和fibonacci的演算法,沒什麼可說的。接下來給了個演算法分析,這個很有意思。
意思是:把下面這個輸出出來:122
3334444
55555
這並不難,**是:
#includevoid display(int n)
list;
void display(list stl,int l,int r)
}int main()
display(stl,0,stl.size-1);
return 0;
}
非遞迴的,**是:
#include//非遞迴
#includetypedef struct list
list;
typedef struct
stack;
void display(list stl,int l,int r)
else}}
} int main()
display(stl,0,stl.size-1);
return 0;
}
我認為,遞迴和非遞迴之間的轉化最巧妙的地方就是在於,他們的方法是一樣的,只不過是表達方式不一樣罷了。在轉換的過程中,非遞迴借助了棧來做第三者,這個和樹的層次遍歷有異曲同工之妙。
在接下來,是乙個應用問題,揹包:時間不夠了,10天後再來變這段**。
資料結構 遞迴呼叫學習
在回顧資料結構的時候,重新學習了一下對遞迴的使用,希望對您有幫助。package com.qxlx 迴圈改遞迴 改為遞迴的關鍵是發現邏輯 相似性 不要忘記遞迴出口 構造相似性 如果沒有明顯的相似性,需要主動構造 不能相似的原意很可能是缺少引數 遞迴與數學上的的遞推公式和類似 author jia p...
資料 結構 遞迴
遞迴不一定非要像斐波拉契數列一樣在return中呼叫函式 遞迴的結束條件就是初始條件值 通常的方法將遞迴呼叫放在if語句中 n!通過遞迴實現 常用方法還是通過while實現 def jiecheng n if n 0 return 1 else sum n jiecheng n 1 右邊只有階乘表示...
資料結構 遞迴
所謂遞迴,就是在乙個函式,過程,或者資料結構的內部,又直接或間接出現定義本身的應用。在以下三種情況中,常常使用遞迴。比如階乘函式,我們能夠將其分解成幾個小問題來求解,比如求5!我們可以先求4!想求4!先求3!這樣一步步使問題簡化的方法,稱之為分治法。採取分治法求解,需要滿足下面三個條件 1.能夠將乙...