私は線形再帰を理解し始めていませんでした、そしてそれから私はソートアルゴリズムを練習していると思いました、そしてそれからクイックソートは私が再帰に問題を抱えていたところです。そこで、オンラインで見つけた2進数の合計など、より単純なものを使用することにしました。すべての関数呼び出しと同様に、再帰は一度に1つずつ実行され、同時には実行されないことを理解しています(これはマルチスレッドが行うことですが、トレースするときは問題になりません)。したがって、再帰呼び出しBの前にすべての再帰呼び出しAを実行する必要がありますが、ミックスで迷子になります。誰かがそれを完全にトレースしてもかまいませんか。たとえば、私が使用したサイズはn = 9で、単純にするために要素はすべて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));
}