Java递归输出

时间:2015-05-05 11:14:46

标签: java recursion

我在这里有这个递归,当我输入“ello”时,输出返回“ello”。 我以为它会回归“ellllloo”。我不跟随递归吗? 它一直在调用FN(str.substring(1));

            return str.substring(0, 1) + FN(str.substring(1));

3 个答案:

答案 0 :(得分:4)

没有' a'或者' h'在输入中,所以它总是会调用return str.substring(0, 1) + FN(str.substring(1));直到长度为0:

FN("ello") = 
   "e" + FN("llo") = 
   "e" + "l" + FN("lo") = .... = "ello"

答案 1 :(得分:1)

每次递归都会占用剩余字符串的第一个字母:

  "e" + FN("llo")
= "e" +    "l"   + FN("lo") 
= "e" +    "l"   + "l"     + FN("o") = "ello"

答案 2 :(得分:1)

使用

str.substring(0, 2)// instead of str.substring(0, 1)