我还没有开始理解线性递归,然后我想我练习排序算法,然后快速排序是我遇到递归问题的地方。所以我决定使用一个更简单的方法,例如我在网上找到的二进制和。我知道递归,就像所有函数调用一样,一次执行一次,而不是同时执行(这是多线程所做的,但在跟踪时我不关心)。所以我需要在递归调用B之前执行所有递归调用A,但我迷失了。有没有人介意完全追踪它。例如,我使用的大小为 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));
}