gpt4 book ai didi

java - 对递归方法有点陌生,我不确定为什么这不起作用

转载 作者:行者123 更新时间:2023-11-30 10:48:29 25 4
gpt4 key购买 nike

<分区>

我正在为一个类做作业,但我不确定为什么我为这两种方法编写的代码不起作用。

对于第一种方法,我试图将数组中的当前位置与下一个进行比较,如果下一个更大,则它成为最大的。否则,当前位置的 int 将成为最大的。使用递归方法调用遍历数组后,它将返回数组中最大的 int。

// This method takes an integer array as well as an integer (the starting index) and returns the largest number in the array.
public int largestRec(int[] arr, int pos)
{
// TODO: implement this method
int largest = arr[pos];
if(pos == arr.length-1)
{
return largest;
}
else
{
if(arr[pos] < arr[pos+1])
{
largest = arr[pos+1];
}
else
{
largest = arr[pos];
}
pos++;
largestRec(arr, pos);
}
return largest; // replace this statement with your own return
}

第二种方法。我想要做的是让它通过递归方法调用传递一个较小版本的字符串,然后当测试类调用该方法时,它将打印出字符串的反转。

// This method reads a string and returns the string in the reversed order.
public String reverseStringRec(String s)
{
// TODO: implement this method
String reverse;
int pos = 0;
if(s=="" || s.length() <= 1)
{
return s;
}
else
{
reverse = reverseStringRec(s.substring(1)) + s.charAt(0);
}
return reverse; // replace this statement with your own return
}

我不确定如何编写代码来做到这一点(对于赋值,我只能修改方法,不允许外部变量/方法/类),所以我很感激任何建议/帮助你可以提供。如果您需要更多信息,我很乐意提供。谢谢。

编辑:我的问题是第一个方法不返回最大的。对于我的测试数组,它通常打印第一个 int 或第二个(如果它大于第一个,但不检查其余部分)。对于第二个,我的测试课(由我的教授制作)给出了消息“字符串索引超出范围”,我不知道如何解决。我查看了 Jason 的建议,并将建议的解决方案放入其中,但它似乎不适用于我的情况。

Edit2:新版本的 reverseStringRec() 现在可以使用了。现在我需要修复 largestRec()。如果有人可以提供任何帮助,问题仍然悬而未决。

Edit3:虽然我修复了 reverseStringRec(),但有人给出了包含 for 循环的答案。我没有提到我不能为这个作业使用循环,所以对于给您带来的不便,我深表歉意。如果您需要查看它现在产生的结果,我会将当前 largestRec() 的输出放在下面。

测试 3:largest(10) ==> [通过] 预期:10 你的:10

测试 4:最大(10、20、30、40、50、60)==> [失败] 预期:60 你的:20

测试 5:largest(70, 20, 30, 40, 50, 10) ==> [通过] 预期:70 你的:70

测试 6:最大(70、20、100、40、50、10)==> [失败] 预期:100 你的:70

Edit4:找到两种方法的解决方案。对于 largestRec(),请查看下面提供的解决方案。对于 reverseStringRec(),您可以使用本文中的方法或下面建议的方法之一。

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