gpt4 book ai didi

java - 如果函数不是递归的,while 可以用 if 代替吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:13 25 4
gpt4 key购买 nike

我正在学习 coursera 关于算法的类(class),我只是想知道是否可以用更简单的方式编写其中一个函数:

private int root ( int i)
{
while( i != id[i])
{
id[i] = id[id[i]];
i = id[i];
}
return i;
}

一个真正简短的介绍是 id[] 代表一个元素数组,这些元素是树。所有元素都有一个指向根的数值。此函数尝试找到根。

它有效。但是,是否需要 while 循环?该函数似乎不是递归的,也不是以任何方式递增 i 所以它可以被 if 替换吗?

我知道我在这里遗漏了一些东西,但我就是找不到。

最佳答案

在这个例子中,它试图找到一条路径。循环不会递增变量,而是在每次迭代时将 i = 设置为路径 id[i]

中的下一个元素

想象一下数组看起来像

int[] id = { 1, 2, 3, 4, 4 };
int i = 0;

在第一次迭代时,

i = 0;
i = id[0] == 1;
i = id[1] == 2;
i = id[2] == 3;
i = id[3] == 4;
4 == id[4] so it stops.

使用递增以外的东西的循环相当普遍,最明显的例子是使用迭代器,但另一个常见的例子是遍历列表的节点。

关于java - 如果函数不是递归的,while 可以用 if 代替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598333/

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