我对这个问题感到困惑:
请考虑以下方法。 recur(“ mouse”,2)的值是什么?
public static String recur(String str, int n)
{
if(n >= str.length())
{
return str;
}
return str + recur(str.substring(n), n + 2);
}
我认为该值将为“ use”,因为该方法以recur(use,4)重复出现,导致其返回使用,但是我不确定它是否会在第一次返回时停止,从而使其放弃使用,或者是否会转到第二个return语句。
答案 0 :(得分:1)
好吧,我们来追踪一下recur("mouse", 2)
:
"mouse" + recur("use", 4)
。让我们追踪recur("use", 4)
:
"use"
。因此,回到recur("mouse", 2)
,我们将返回它:
"mouse" + recur("use", 4)
"mouse" + "use"
"mouseuse"
答案 1 :(得分:0)
该方法将返回mouseuse
。
recur("mouse", 2)
首先返回mouse
,再加上recur("use", 4)
(use
是因为"mouse".substring(2)
返回use
)。
recur("use", 4)
将返回use
,因为4 >= str.length()
和str.length()
等于3。由于满足,它将返回str
本身,即{ {1}}。
因此,use
返回recur("use", 4)
。将其与use
串联,即可得到mouse
。