【发布时间】:2014-09-05 22:10:26
【问题描述】:
我在理解递归方面需要指导。
这是我所拥有的:
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位置找到了元素,当i+1位置有不同的元素时,你会用No覆盖str。找到值后尝试从循环中break,或默认将str初始化为No,并且仅在循环中将其设置为Yes,而不是返回No。 -
@tobias_k 你能解释一下我是如何覆盖 str 的吗?它不应该是str + str + ...等吗?每个 str 保存在该迭代期间分配的 String 然后连接。默认情况下将 str 设置为“否”确实有帮助。