我之前發佈過一個問題,但我並不清楚。我的混亂很抱歉,但如果有一個項目像什麼,我的意思是:當下面的程序有2個遞歸語句時,如何執行遞歸?
TreeNode createMinBST(int arr[], int start, int end) {
if(end< start) return null;
int mid = (start+end)/2;
Treenode n= new Treenode(arr[mid]);
n.left= createMinBST(arr, start, mid-1) //LINE a
n.right= createMinBST(arr, mid+1, end); //LINE b
return n;
}
如何LINE和B線UNROLL或者它是如何工作(就像在編碼採訪書中說)? LINE a是否一直到基本情況並返回值,然後LINE b執行?或者這兩個遞歸語句同時歸結爲基本情況?
如果有人能解釋水平明智的路徑創建從上面的代碼中的最小BST,這將是真正有助於瞭解如何遞歸多個語句(這裏2-線和B線)發生
謝謝很多
爲什麼不直接按照程序流程手動?或者通過在調試器中逐步觀察真實情況。 – 2012-01-07 17:50:31
[多遞歸展開]的可能重複(http://stackoverflow.com/questions/8770492/multiple-recursion-unrolling) – Mat 2012-01-07 17:51:01
@ Mat-我在這裏再次發佈它,因爲我的問題因爲不夠清晰而關閉。 – user807496 2012-01-07 17:51:55