递归方法向后打印字符串中的每个字母3次

时间:2014-02-08 04:13:12

标签: java string recursion methods command-line

我正在处理一个递归方法,该方法将返回并在我的main方法中打印,每个字符串向后三个字符串。字符串是(args [1])。例如,如果字符串是“堆栈”。它应该输出到:

  

kkkcccaaatttsss

到目前为止,我设法向后打印字符串。我应该如何打印每个字符串三次?

到目前为止我的代码:

public static void main(String[] args){
    int number = Integer.parseInt(args[0]);
    String word = new String("");
    word = args[1];

    String methodddd = recursive1.method4(word, number);
    System.out.println(methodddd);
}

public static String method4(String word){
    int length = word.length();
    if (length == length*3){
     return "";
    }
    return word.substring(length-1, length) +  method4(word.substring(0, length-1));
}

2 个答案:

答案 0 :(得分:1)

你非常接近:修改return行以预先挂起子串三次,而不是预先挂起一次:

public static String method4(String word){
    int length = word.length();
    if (length == 0){
         return "";
    }
    String last = word.substring(length-1, length);
    return  last + last + last +  method4(word.substring(0, length-1));
}

注意结束条件:length == length*3如果(且仅当)length为零时为真。

Demo.

答案 1 :(得分:0)

以下是伪代码的基本答案:

recursive_stutter(s:string){
   if length of s is 0
      return
   letter = s[0]    // save the first character
   recursive_stutter(s from 1 to length)
   printf "%c%c%c",letter, letter,  letter
}