我讨厌滥用SO做作业,但我是个腌菜。基本上,我的导师要我这样做:
编写递归方法以向后打印String。
之后,他们希望我做同样的事情,但在电话会议后有了print语句。
我很难过。我已经掀起了一个普通人的递归方法:
public static String reverseString(String input) {
if(input.equals("")) {
return input;
}
else {
return(reverseString(input.substring(1)) + input.substring(0, 1));
}
}
但印刷品让我挠头。提前谢谢!
答案 0 :(得分:7)
只需打印当前连接到字符串的任何内容:
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));
}
}
答案 1 :(得分:0)
回答其他选择。尽管您需要记住在进行递归调用之前打印,但您必须基本相同。因此,您需要在执行递归调用之前打印最后一个字母,而不是来自@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));
}
}
答案 2 :(得分:0)
如果我理解你应该使用递归调用打印“反向”字符串,如果是这样,请使用第一个问题:
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 ));
}
}
}