我沒有開始理解線性遞歸,然後我認爲我在排序算法上練習,然後快速排序是遞歸問題。所以我決定用一個更簡單的工具,例如我在網上找到的一個二進制和。我明白,像所有函數調用一樣,遞歸一次只執行一次,而不是同時執行(這是多線程做的事情,但在跟蹤時不是我關心的事情)。所以我需要執行所有的遞歸調用B之前的遞歸調用B,但我迷失在混合中。有沒有人介意完全追蹤它。例如,我已經習慣了尺寸,n = 9,其中elems都是1來保持簡單。使用二進制遞歸求和數組的元素
/**
* Sums an integer array using binary recursion.
* @param arr, an integer array
* @param i starting index
* @param n size of the array
* floor(x) is largest integer <= x
* ceil(x) is smallest integer >= x
*/
public int binarySum(int arr[], int i, int n) {
if (n == 1)
return arr[i];
return binarySum(arr, i, ceil(n/2)) + binarySum(arr,i + ceil(n/2), floor(n/2));
}
我嘗試的長度像斐波那契例如在這個網站上追蹤但它對我來說變成了一場噩夢。請參閱:http://cis.stvincent.edu/html/tutorials/swd/recur/recur.html。我會感謝大家的幫助。 – user784423