【问题标题】:Recursive method print each letter in a string 3 times backwards递归方法将字符串中的每个字母向后打印 3 次
【发布时间】:2014-03-05 16:39:48
【问题描述】:

我正在研究一种递归方法,它将在我的 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));
}

【问题讨论】:

    标签: java string recursion methods command-line


    【解决方案1】:

    这是基本的答案,用伪代码:

    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
    }
    

    【讨论】:

      【解决方案2】:

      你已经很接近了:修改return这一行,将子字符串前置3次,而不是前置一次:

      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.

      【讨论】:

      • 哦,好吧,我知道我的基本情况是如何给我带来麻烦的。因为我在调整我的递归案例时继续出错。谢谢你的解释。它真的帮助我理解了:)
      猜你喜欢
      • 2014-03-05
      • 2020-05-22
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      相关资源
      最近更新 更多