我需要指導理解遞歸。查看數組方法
以下是我有:
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