gpt4 book ai didi

java - 在数组方法中查找

转载 作者:行者123 更新时间:2023-12-01 22:43:42 25 4
gpt4 key购买 nike

我需要理解递归的指导。

这是我所拥有的:

public class ArrayMember
{
public static void main(String[] args)
{
int index = 0;
int [] arr = {1, 5, 6, 2};

System.out.println(member(arr, index));
}

public static String member(int [] arr, int index)
{
if(index == arr.length)
return str;

str = index + "\t" + str + "\n";

return str + member(arr, index+1);
}
}

如您所见,这永远不会一直达到 20 并且始终打印“No”。我很确定 for 循环达不到目的,但我想不出任何其他方法来做到这一点。任何帮助将不胜感激。

最佳答案

您的代码有两个问题:

  1. 通过在循环的每次迭代中设置 str,即使您在位置 i 中找到元素,您也会用 覆盖 str >“No” 当位置 i+1 中有不同的元素时,有效地将 str 设置为该元素是否是数组中的最后一个元素。找到值后尝试中断循环,或者默认将str初始化为“No”并且仅将其设置为如果你找到了,"is"
  2. 通过检查 index == arr.length 您并没有测试从 1 到 20 的所有数字。您可以检查 index > arr[arr.length-1] code>,即检查它是否大于列表中的最后一个元素,但这仅在列表已排序的情况下才有效。

这应该可以修复您的代码。然而,说实话,我认为你有点误解了作业(尽管我不得不承认一开始还不是很清楚)。我不会使用递归来测试后续数字(问题是您不知道何时停止),也不会使用循环来测试数组的不同位置,而是将其反转:使用循环来测试不同的数字您想要测试,并对数组中的不同位置使用递归。

这样,您就可以将程序简化为这样(伪代码):

function member(arr, num, index) -> bool :
if index does not exceed array
return arr[index] equals num or member(arr, num, index+1)
else
return false

arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
for i from 1 to 20
print i, member(arr, i, 0)

关于java - 在数组方法中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694669/

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