目錄
1 遞迴實現
1.1 思路
1.2 **
2 非遞迴實現
2.1 思路
2.2 **
底層是由棧實現,若根節點非空,先列印根節點,之後遞迴到根節點的左孩子節點...當遇到null節點時,返回;此時第6行**執行完畢,進入第7行**,注意此時遞迴後的節點,訪問到當前節點的右孩子節點又進入遞迴~剛開始理解遞迴有些難,但這要自己慢慢琢磨、摸索**~
void binarytreeprevorder1(treenode root)
system.out.print(root.value+" ");
binarytreeprevorder1(root.left);
binarytreeprevorder1(root.right);
}
底層用棧實現,定義乙個節點指向根節點,當根節點不為空的時候將其入棧,並將其列印,該節點指向左孩子節點,直到將所有的左孩子節點都入棧,取出棧頂節點,將棧頂節點的右孩子入棧並列印,依次這樣下去就完成了前序遍歷~
void binarytreeprevordernonr(treenode root)
cur = stack.pop().right;
}}
用遞迴和非遞迴實現斐波那契數列(C語言)
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
遞迴和非遞迴
1 遞迴就是函式呼叫函式本身,執行起來就是函式巢狀函式,層層巢狀,所以函式呼叫 引數堆疊都是不小的開銷,但是程式簡單。2 非遞迴就是不斷地對引數入棧 出棧,省去了函式層層展開 層層呼叫的開銷。雖然引數出入棧次數多了,但是一般都開闢固定的足夠大的記憶體來一次性開闢 重複使用。3 非遞迴是從堆疊的角度來...
遞迴和非遞迴分別實現strlen
遞迴和非遞迴分別實現strlen 來計算字串長度。方法一 遞迴 1 鍵入要求的字串 2 判斷字串是否為空,為空返回0 不為空返回strlen a 1 1 a 1表示字串後移一位 1表示字串長度 1 3 列印結果 方法二 1 鍵入要求的字串 2 判空,空則返回0 不為空則迴圈,count自增 3 列印...