使用引用传递参数跟踪递归算法

本文关键字:参数 跟踪 递归算法 引用 | 更新日期: 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()实际上是在不同的对象上执行的。