2014-02-08 130 views
2

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

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

回答

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.

+0

哦好吧,我看到我的基本情况是造成我的麻烦。由于我在调整递归情况时继续出现错误。谢谢你的解释。它真的帮助我理解:) –

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 
} 
相关问题