下面是两个具有两个不同功能的递归代码。
[1] 我的使用递归检查回文代码是这样的:
import java.util.Scanner;
public class CheckPalindromeRecursion {
public static boolean recursion(String pal) {
if (pal.length() == 0 || pal.length() == 1) {
return true;
} else if (pal.charAt(0) == pal.charAt(pal.length() - 1)) {
return recursion(pal.substring(1, pal.length() - 1));
}
return false;
}
public static void main(String[] args) {
System.out.println("Enter the String for check:");
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
if(recursion(str))
System.out.println(str + " is a palindrome");
else
System.out.println(str + " is not a palindrome");
scan.close();
}}
[2] 我的使用递归反向数字的代码是:
import java.util.Scanner;
public class ReverseNumberRecursion {
public static void reverse(int numb) {
if (numb < 10) {
System.out.print(numb);
return;
} else {
System.out.print(numb % 10);
reverse(numb/10);
}
}
public static void main(String[] args) {
System.out.print("The number you want to reverse is: ");
Scanner in = new Scanner(System.in);
int numb = in.nextInt();
in.close();
System.out.print("The reversed number is: ");
reverse(numb);
}}
为什么我必须在- [1]: return recursion(pal.substring(1, pal.length() - 1));
中使用返回,但是我不需要使用返回 in- [2]: reverse(numb/10);
?
答案 0 :(得分:0)
这是因为函数中的参数
public static boolean recursion(String pal) -> returns data of type boolean
public static void reverse(int numb) -> doesnot return any data so intialize with void
无论何时我们想在使用return的另一个函数中使用特定函数的数据时,return语句都是基于用户要求的