为什么我必须在回文检查中使用退货?

时间:2019-04-19 10:52:48

标签: java recursion

下面是两个具有两个不同功能的递归代码。

[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);

1 个答案:

答案 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语句都是基于用户要求的