-5
import java.util.*;
public class RecursionProject {
  public static void main(String[]args) {
    getLine(); 
    useRecursion();
  }
  public static void getLine() {

    System.out.println("This program uses recursion.") ;
    System.out.println("Would you like to see how it works?") ;
    System.out.print("If yes, type yes, else type no -----> ");
    String userResponse = null;
    Scanner in = new Scanner(System.in);
    userResponse = in.next();
    System.out.println(userResponse);
    if (userResponse.equalsIgnoreCase("yes")) {
      System.out.println() ;
    }
    else {
      System.out.println("Thank you for using this program.");
      System.exit(0);
    }

  }
  private static void useRecursion(){
    System.out.println("Type in what you would like to see") ; 
    System.out.println("done recursively. (This program ") ;
    System.out.println("excludes white spaces):") ;
    String s = null ; 
    Scanner console = new Scanner(System.in) ;
    s = console.next() ; 
    if (s.isEmpty()) {
      System.out.print(" - ") ;

    }
    else {
      System.out.println("0") ;
    }
  } 
}

所以这是我到目前为止的代码。我的任务是从控制台读取输入,然后使用递归反转相位。即,如果用户键入“动物”,它会在屏幕上打印出“slamina”。我知道我的基本情况是该行是否为空,而我的递归情况是该行是否包含文本。这是一个 Programming 2 类,在 Eclipse 4.2.2 上使用 Java

4

3 回答 3

0

StringBuffer有一个内置reverse()方法,所以只需使用它。

以下是您将如何反转String诸如“Hello World”之类的内容:

String source = "Hello World";

    for (String word : source.split(" ")) {
        System.out.print(new StringBuffer(word).reverse().toString());
        System.out.print(" ");
    }

输出:

olleH dlroW 

这是家庭作业,所以我不会为你做。基本上,要使其递归,您需要创建一个接受 a String(或Strings带有可变参数的多个)的方法,然后使用我的代码逻辑来反转StringorStrings并返回它们。然后,您可以在每次需要String反转时调用该方法。

于 2013-03-14T00:08:44.550 回答
0

很难提供既有用又不为你做功课的东西。我会尝试,但我不会给你工作代码。

从这样的事情开始:

public static final String reverse ( String s ) {
  if ( s != null && s.length() > 1 ) {
    return (lastChar(s) + allButLastChar(s));
  }
  return s;
}

编写lastCharand allButLastChar,运行代码,看看它做了什么。下一步取决于您,但应该很明显。

于 2013-03-14T00:11:07.263 回答
0

通常通过递归,您将拥有一个调用自身的函数。你不需要递归来反转一个字符串,但我想你可以有一个函数来接受一个字符串,并将字符串的第一个字符附加到其余字符的反面。

我将尝试在不提供太多代码的情况下解释它是如何工作的。

所以说你有一个reverse反转字符串的函数。在里面你可以说:

return reverse(myString.substring(1)) + myString[0];

当您在 string 上调用它时Hello,它的工作方式如下:

reverse("Hello")
-> reverse("ello") + "H"
-> reverse("llo") + "e" + "H" 
-> reverse("lo") + "l" + "e" + "H" 
-> reverse("o") + "l" + "l" + "e" + "H" 
-> "o" + "l" + "l" + "e" + "H"

当字符串为空时,它需要切断递归。

于 2013-03-14T00:17:30.107 回答