我需要指导理解递归。查看数组方法
以下是我有:
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,并始终打印“否”。我很确定有一个for循环会打败这个目的,但我想不出有任何其他的方式来做到这一点。任何帮助,将不胜感激。
一个问题是,即使你找到的位置'i'的元素,你覆盖'str'与'不'当位置'i + 1'有不同的元素时。尝试从循环中“断开”,一旦找到该值,或者默认将'str'初始化为'No',并且只在循环中将其设置为'Yes',但不回到'No'。 – 2014-09-05 22:14:44
@tobias_k你能解释我如何覆盖str吗?不应该是str + str + ...等等吗?每个str保存在该迭代期间分配的字符串,然后连接。默认情况下将str设置为“No”确实有助于顺便说一句。 – cress 2014-09-05 22:22:57