使用引用传递参数跟踪递归算法
本文关键字:参数 跟踪 递归算法 引用 | 更新日期: 2023-09-27 18:21:48
通过引用传递的参数是调用者和被调用者之间的共享项。此项是否用于函数的递归调用共享?
假设这个合并排序算法:
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数组,编译器如何合并两个S数组并合并它们?所以S没有分享??
提前感谢
对象由引用传递,但在每次递归调用中,变量S
指向不同的对象。因此,每个merge()
实际上是在不同的对象上执行的。