/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package plaindromenumbers;
import java.util.Scanner;
/**
*
* @author taha
*/
public class PlaindromeNumbers {
/**
* @param args the command line arguments
*/
int func1(int n)
{
if(n==1)
return 1;
return n*func1(n-1);
}
static boolean check=false;
int func(int no)
{
String a=""+no;
String reverse = new StringBuffer(a).reverse().toString();
if(a.equals(reverse))
{
if(!a.contains("0"))
{
System.out.println("hey");
check=true;
return Integer.parseInt(a);
}
}
// else
// {
func(no++);
if(check==true)
{
return 0;
}
return 0;
}
public static void main(String[] args) {
// TODO code application logic here
Scanner in=new Scanner(System.in);
System.out.println("Enter testcase");
int testcase=in.nextInt();
while(testcase>0)
{
int a=in.nextInt();
PlaindromeNumbers obj=new PlaindromeNumbers();
System.out.println(obj.func(a));
testcase--;
}
}
}
答案 0 :(得分:1)
您需要返回func(no + 1)
,这样您的代码将返回下一个回文数(我假设您希望代码执行此操作?)。不需要check
。当代码甚至不使用时,为什么要包含func1
?
顺便说一下,堆栈溢出是由func
的无限递归引起的。
答案 1 :(得分:1)
问题在于:
func(no++);
我们说no
是32.这会将32传递给func
,然后递增它。这意味着您再次使用值32调用该函数。当该函数点击此行时,它将再次将该32传递给func
。因此,一个无限的递归循环。
您可以像这样修复此错误:
func(++no);
现在,在调用no
之前,它会增加func
。 no
将是33,它将与其相反,并且一切都会很好。