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
答案 0 :(得分:0)
StringBuffer
有一个内置的reverse()
方法,所以只需使用它。
以下是如何撤销诸如“Hello World”之类的String
:
String source = "Hello World";
for (String word : source.split(" ")) {
System.out.print(new StringBuffer(word).reverse().toString());
System.out.print(" ");
}
输出:
olleH dlroW
这是家庭作业,所以我不打算为你做。基本上,要使其递归,您需要创建一个接受String
(或带有可变arity参数的多个Strings
)的方法,然后使用我的代码逻辑来反转String
或{ {1}},并返回它们。然后,每次需要转换Strings
时,您都可以调用该方法。
答案 1 :(得分:0)
很难提供既有用又无法为你做功课的东西。我会尝试,但我不会给你工作代码。
从这样的事情开始:
public static final String reverse ( String s ) {
if ( s != null && s.length() > 1 ) {
return (lastChar(s) + allButLastChar(s));
}
return s;
}
编写lastChar
和allButLastChar
,运行代码并查看其功能。下一步取决于你,但它应该是显而易见的。
答案 2 :(得分:0)
通常使用递归,您将拥有一个自我调用的函数。你不需要递归来反转字符串,但我想你可以有一个带字符串的函数,并将字符串的第一个字符追加到其余部分的反面。
我会尝试解释这是如何工作的,而不会给出太多代码。
所以说你有一个函数reverse
可以反转一个字符串。在其中你可以说:
return reverse(myString.substring(1)) + myString[0];
当你在字符串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"
当字符串为空时,它需要切断递归。