gpt4 book ai didi

c - 我必须通过递归检查一个数字是否是回文

转载 作者:行者123 更新时间:2023-11-30 18:36:12 26 4
gpt4 key购买 nike

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;
}

公共(public)函数就变成了:

int pali(int n)
{
return do_pali(0, n);
}

在具有内部函数的语言中,这可以更简洁地表达(GCC 支持将此作为扩展)。

关于c - 我必须通过递归检查一个数字是否是回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668005/

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