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

Java 递归方法将字符串中的每个字母向后打印3次,java,string,recursion,methods,command-line,Java,String,Recursion,Methods,Command Line,我正在研究一个递归方法,它将返回并在我的主方法中打印,字符串的每个字母向后三次。字符串为(args[1])。例如,如果字符串是“stack”。它应该输出到: KKKCCCAATTSS 到目前为止,我设法将字符串向后打印。如何将每个字符串打印三次 到目前为止,我的代码是: public static void main(String[] args){ int number = Integer.parseInt(args[0]); String word = new String("

我正在研究一个递归方法,它将返回并在我的主方法中打印,字符串的每个字母向后三次。字符串为(args[1])。例如,如果字符串是“stack”。它应该输出到:

KKKCCCAATTSS

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

到目前为止,我的代码是:

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));
}

非常接近:将
return
行修改为pre pend substring三次,而不是将其预挂起一次:

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
为零,则为真


以下是基本答案,用伪代码:

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
}

哦,好吧,我知道我的基本情况是如何给我带来麻烦的。因为我在调整递归案例时不断出现错误。谢谢你的解释。这确实帮助我理解:)