gpt4 book ai didi

java - 使用递归来确定数字是否是回文数

转载 作者:行者123 更新时间:2023-12-02 03:30:57 25 4
gpt4 key购买 nike

这里的目标是检查一个数字是否是回文或不使用递归。今天是我使用递归的第一天,所以你可以看到代码似乎不太令人信服。

我尝试使用打印语句来查看出了什么问题。第一次运行该程序时,我输入“101”。“pal_Q”和“temp”具有相同的值(101),但输出是“该数字不是回文”。

我不确定出了什么问题,所以我再次运行它,输入22,但它仍然不起作用。我的 if 语句有问题吗?有什么错误?

private static int pal_Q = 0;
private static int originalNumber;
private static int i = 0;

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number");
checkPal(sc.nextInt());

if (pal_Q == temp) {
System.out.println("The number is a palindrome");
}
else if (pal_Q != originalNumber) {
System.out.println("The number is not a palindrome");
}
}

public static int checkPal(int n) {
pal_Q *= 10;
if (i == 0) {
originalNumber = n;
i++;
}
if (n == 0) {
return 1;
}
pal_Q += n % 10;
System.out.print("Pal_Q=" + pal_Q + ", origNum=" + originalNumber);
System.out.println(", n=" + n + " " + (n % 10));
return checkPal(n / 10);
}

最佳答案

如果你想学习递归,那么你也可以通过将数字转换为String来解决上面的问题,因为如果我们只需要检查数字是否是回文,那么它通过首先将数字转换为String(或字符数组),可以很容易地解决这个问题。请参阅下面的代码,检查 isPalindrome() 方法,并调试它以使递归正常工作。

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number");
String str = String.valueOf(sc.nextInt());
boolean isPalin = isPalindrome(str, 0, str.length() - 1);
if (isPalin) {
System.out.println("The number is a palindrome");
}
else {
System.out.println("The number is not a palindrome");
}
}

private static boolean isPalindrome(String num, int i, int j) {
if (i >= j) {
return true;
}
return num.charAt(i) == num.charAt(j) && isPalindrome(num, i + 1, j - 1);
}

关于java - 使用递归来确定数字是否是回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38101466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com