【发布时间】:2020-03-25 20:24:39
【问题描述】:
所以我在春假期间为自己编写了一些递归代码,没有任何目的。目前我正在尝试制作一个递归函数,它将反转用户输入的字符串。我现在有这个,它有效。
import java.util.Scanner;
public class Recursion {
public static void main(String args[]) {
String userStr = " ", userAlt = " ";
int position = 0, length = userStr.length() - 1;
@SuppressWarnings("resource")
Scanner scan = new Scanner(System.in);
System.out.println("Please enter a string.");
userStr = scan.nextLine();
userAlt = reverse(userStr);
System.out.println("\n" + userStr + " is... \n" + userAlt + " backwards!");
}
public static String reverse(String userStr) {
if(userStr.isEmpty()) {
return userStr;
}
else {
return reverse(userStr.substring(1)) + userStr.charAt(0);
}
}
}
虽然,我不确定这个 return 语句是如何工作的,因为它让我感到困惑。我认为恒定输出只是字符串末尾的第一个字母,没有完全反转它,但事后看来它可以正常工作。我希望有人可以帮助我,我认为 substring() 方法没有遗漏任何东西。提前致谢!
例如:如果输入的字符串是“spring”,那么 userAlt 的输出应该是“gnirps”。但是为什么呢?
编辑:对于 int 位置和长度的无用代码声明感到抱歉,我正在研究一种不同的方法来解决它,遇到这种方式然后从未删除过代码。
【问题讨论】:
标签: java string eclipse recursion