这个问题的答案是什么?

时间:2018-10-20 02:14:14

标签: java

我对这个问题感到困惑:

请考虑以下方法。 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语句。

2 个答案:

答案 0 :(得分:1)

好吧,我们来追踪一下recur("mouse", 2)

  1. 2≥5?不。
  2. 返回"mouse" + recur("use", 4)

让我们追踪recur("use", 4)

  1. 4≥3?是的。
  2. 返回"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