Asi*_* x3 0 java methods recursion command-line return
我遇到了一个递归方法的问题,该方法将返回并在我的main方法中打印从X(X是命令行上的int)到0的数字.将数字作为字符串返回.
例如,我的命令行参数是4.我的输出应该是:4,3,2,1,0
我有点理解如何反转一个字符串,如:"123"到"321"..但是当得到一个像3这样的整数时,没有任何线索,并将它像"3,2,1,0"一样返回为字符串.:○
我的代码atm:
public static void main(String[] commandlineArguments) {
if (commandlineArguments.length == 0) {
System.out.println("Please enter a least one commandline!");
}
else {
Integer number = new Integer(0); // initialize number
try {
number = Integer.parseInt(commandlineArguments[0]);
}
catch (NumberFormatException exception) { // NumberFormatException
System.out.println(exception + " is not a integer!");
System.exit(1); // end program
}
String reverse = reverse1(number);
System.out.println(reverse);
}
}
public static String reverse1(Integer number){
if (number == 0){
return "";
}
else{
return "";
}
}
}
Run Code Online (Sandbox Code Playgroud)
public static String reverse1(int number){
if (number == 1){
return "1";
} else {
return number + ", " + reverse1(number - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
递归的诀窍是 - 在我看来 - 总是搜索琐碎的案例.所以这里最简单的输入是1,结果是"1"
reverse1(1) = "1";
Run Code Online (Sandbox Code Playgroud)
然后你需要那个"奇怪的"递归步骤,你可以减少对那个琐碎案例的投入.
reverse1(n) = n, reverse(n-1)
Run Code Online (Sandbox Code Playgroud)
在这里你只需说:
数字n的结果总是"此数字减1"的结果,前面有额外的数字n.
想想看,它很合乎逻辑.
以"递归方式"来思考问题有时并不容易.但通常它会使事情变得更容易.