通过引用参数传递的是调用方和被调用方之间的共享项目。 这个项目是否共享一个函数的递归调用?通过引用参数传递跟踪递归算法
假设本次合并排序算法:
MergeSort(ref int[]S)
{
.
.
.
MergeSort(ref S1);
MergeSort(ref S2);
Merge(S1,S2,S);
}
通过为S = {2,3,1,0},我们有跟踪算法:
2,3,0,1
2,3 1,0
2 3 1 0
在算法结束时,编译器将在第二级树中合并为S,合并(0,1)和(2,3)并创建(0,1,2,3)。
我们只有一个S数组是共享的,编译器如何合并2个S数组并合并它们? 所以S不共享??
预先感谢
对不起,算法跟踪对我来说更重要,我希望C系列程序员给我一个想法。 – PasJ 2012-01-30 11:48:19
@PJJ:但三种不同的语言处理参数的方式有所不同。例如,Java根本不*具有*通过引用。如果没有选择特定的语言并理想地给出更完整的代码,这个问题就没有意义。 – 2012-01-30 11:49:45