渡された参照引数は、呼び出し元と呼び出し先の間で共有される項目です。 このアイテムは関数の再帰呼び出し用に共有されていますか?アルゴリズムの終わりに参照渡しによる再帰アルゴリズムのトレース
2,3,0,1
2,3 1,0
2 3 1 0
、コンパイラ:S = {2,3,1,0}、我々が持っているアルゴリズムをトレースすることにより
MergeSort(ref int[]S)
{
.
.
.
MergeSort(ref S1);
MergeSort(ref S2);
Merge(S1,S2,S);
}
:
このマージソートアルゴリズムを仮定します(0,1)と(2,3)をマージして(0,1,2,3)を作成する、ツリーの第2レベルでSにマージします。
私たちは1つのS配列を共有しています。どのようにコンパイラがS配列の2つをマージし、それらをマージしましたか? Sは共有されていませんか?予め
すみません!私にとってはアルゴリズムのトレースがより重要です。私はCファミリーのプログラマーが私にアイデアを与えたいと思います。 – PasJ
@PasJ:しかし、3つの異なる言語では、パラメータがやや異なっています。たとえば、Javaでは*参照渡しがありません。問題は、特定の言語を選ぶことなく、理想的にはより完全なコードを与えることなしに無意味です。 –