int main()
{
int i,n;
printf("Enter the number");
scanf("%d",&n);
i=pali(n);
if(n==i)
printf("Number is pall");
else
printf("Not Pall");
}
int pali(int n)
{
int r;
static sum=0;
if(n!=0)
{
r=n%10;
sum=sum*10+r;
pali(n/10);
}
return sum;
}
我使用了一个静态变量来求和。有没有办法不使用静态变量?
最佳答案
是的,典型的(“函数式”)方法是以函数参数的形式携带状态。通常,有必要/很高兴拥有第二个函数来执行实际的递归,您可以从为状态调用适当的初始值开始:
int do_pali(int sum, int n)
{
if(n != 0)
{
const int r = n % 10;
return do_pali(10 * sum + r, n / 10);
}
return sum;
}
然后,公共功能变为:
int pali(int n)
{
return do_pali(0, n);
}
在具有内部功能的语言中,这可以更简洁地表达(GCC支持将此作为扩展)。
关于c - 我必须通过递归检查数字是否是回文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42668005/