gpt4 book ai didi

java - 方法结束之前的递归不是无限循环?

转载 作者:行者123 更新时间:2023-12-01 23:06:53 25 4
gpt4 key购买 nike

我理解尾递归,因为它的功能与迭代类似,在方法调用本身的末尾使用新参数。但是,当在循环末尾的代码之前放置递归调用时,为什么它不无限地调用 self 呢?在下面的代码中,方法 MergeSort_Recursive() 在同一方法中调用自身两次。对该方法的第二次调用将如何进行?当第一次调用该方法时,它将比较右 > 左,然后初始化 mid。然后它调用自身,我们转到方法的顶部,该方法将再次进行右>左比较,再次初始化 mid,然后再次调用自身并不断重复此步骤。我当然知道这不是它的工作原理,否则这个方法就会失败。所以我的问题是这是如何工作的,以及这两个方法最终如何被调用?

static public void MergeSort_Recursive(int [] numbers, int left, int right)
{
int mid;

if (right > left)
{
mid = (right + left) / 2;
MergeSort_Recursive(numbers, left, mid);
MergeSort_Recursive(numbers, (mid + 1), right);

DoMerge(numbers, left, (mid+1), right);
}
}

最佳答案

在某些情况下,right > left 为 false。然后,该函数没有调用自身一次,因此它成功返回。

关于java - 方法结束之前的递归不是无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com