【问题标题】:How to print (but not return) a String recursively using Java?如何使用Java递归打印(但不返回)字符串?
【发布时间】:2016-03-01 15:55:33
【问题描述】:

我讨厌在家庭作业中滥用 SO,但我很苦恼。基本上,我的导师希望我这样做:

编写一个递归方法来向后打印一个字符串。

  • 方法头是:public void printBackwards1(String s)
  • 打印语句必须在递归调用之前。
  • 该方法不应更改或反转字符串,只能将其反向打印。

在那之后,他们希望我做同样的事情,但在通话后有打印语句。

我被难住了。我已经搞定了一个普通人递归方法:

public static String reverseString(String input) {
        if(input.equals("")) {
            return input;
        }
        else {
            return(reverseString(input.substring(1)) + input.substring(0, 1));
        }
}

但是印刷品让我摸不着头脑。提前致谢!

【问题讨论】:

  • 使用 System.out.println("你的文字"+var);

标签: java recursion


【解决方案1】:

只需打印您当前连接到字符串的任何内容:

public static void reverseString(String input) {
    if(input.equals("")) {
        return;
    }
    else {
        reverseString(input.substring(1));
        System.out.print(input.charAt(0));
    }
}

或更短:

public static void reverseString(String input) {
    if(input.length() > 0) {
        reverseString(input.substring(1));
        System.out.print(input.charAt(0));
    }
}

【讨论】:

    【解决方案2】:

    回答另一种选择。尽管您需要记住在执行递归调用之前执行打印,但您基本上必须执行相同的操作。因此,与@Eran 的其他解决方案相比,您必须在执行递归调用之前打印最后一个字母,您可以在其中打印第一个字母。

    private static void printBackwards2(String input) {
        if (input.equals("")) {
            return;
        } else {
            // Print the last char
            System.out.print(input.substring(input.length()-1, input.length()));
            // Recursive call without the last char by using substring
            printBackwards2(input.substring(0,input.length()-1));
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果我理解得很好,你应该使用递归调用打印一个“反向”字符串,如果是这样,用于第一个问题:

      public static void reverseString ( String input ) {
          if ( input != null ) {
              if ( input.length () <= 1 ) {
                  System.out.print ( input );
              }else{
                 System.out.print ( input.charAt ( input.length ()-1 ));
                 reverseString ( input.substring ( 0, input.length ()-1) );
              }
          }
      }
      

      对于第二个问题

       public static void reverseString ( String input ) {
          if ( input != null ) {
              if ( input.length () <= 1 ) {
                  System.out.print ( input );
              }else{
                 reverseString ( input.substring ( 1, input.length ()) );
                 System.out.print ( input.charAt ( 0 ));
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 1970-01-01
        • 2014-01-12
        • 2020-05-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        相关资源
        最近更新 更多