我有一些代碼需要幫助理解這個雙遞歸
public class NameGenerator {
public static void main (String[] args)
{
List<String> result = new ArrayList<String>();
buildNameChoices("von.del.smith", result);
System.out.println(result);
}
public static void buildNameChoicesHelper(String[] nameArray, int nameIndex,
String firstName, String lastName, List<String> result) {
if(nameIndex >= nameArray.length) {
if(lastName.length() > 0) {
result.add(firstName + lastName);
}
}
else {
System.out.println("Calling first buildNameChoices");
buildNameChoicesHelper(nameArray, nameIndex + 1,firstName, lastName, result);
System.out.println("Calling second buildNameChoices");
buildNameChoicesHelper(nameArray, nameIndex + 1,firstName, lastName + "." + nameArray[nameIndex], result);
}
}
public static void buildNameChoices(String nameStr, List<String> result) {
String[] nameArray = nameStr.split("\\.", -1);
for(int i = 0; i < nameArray.length; i++) {
System.out.println("Inside for loop");
buildNameChoicesHelper(nameArray, i + 1, nameArray[i], "", result);
}
}
}
生成一個名稱字符串,它傳遞的所有可能的組合。代碼有效,我理解遞歸如何在某個級別上工作,但雙遞歸調用真的讓我困惑。我一直在研究它很長一段時間,而且我很難完全掌握它在做什麼。任何幫助,將不勝感激。我試過通過它進行調試,但是我仍然不能真正理解它。
究竟是什麼,你不明白?雙遞歸的概念?或者爲什麼這個特定的案例有效 – Abaddon666
幾乎是整個概念。我真的不明白什麼時候第二個叫。它是否在第一個之後?或者是第一個叫基本案例,然後是第二個叫? – jordaniac89
嘗試看看[this](http://stackoverflow.com/questions/19217565/understanding-double-recursion)這是一個雙遞歸的解釋。 – Abaddon666