gpt4 book ai didi

c++ - 关于C中的任务递归(Visual Studio 15)

转载 作者:行者123 更新时间:2023-11-30 20:35:40 25 4
gpt4 key购买 nike

问题是要取一个数字并将其作为镜像。
假设数字123将变成321。

这是我写的:

int strToRevInt(int* str)
{
if (*str <10)
return *str;

return strToRevInt((*str)/10)*10 + (*str%10);
}

void main()
{
int a = 123;
int d =strToRevInt(&a);
printf("%d", d);
}


我尝试调试它并出于某种原因str在一轮后说“。你知道为什么吗?

谢谢

最佳答案

首先,您可以简化int *。您在评论中说:


  我学会了提供地址而不是价值更好


对于返回大型结构的情况确实如此,其中指针的大小实际上比结构的大小小得多。

在32位体系结构上,内存指针为32位(4字节)。在这些体系结构上,通常int类型也是4个字节。如您所见,无论使用什么代码,代码都将返回相同的“数据量”。指针只会增加代码的复杂性,没有任何优势。

那么您的功能逻辑就有缺陷。对于输入123,它将再次输出(1 * 10 + 2) * 10 + 3

不要为此引用我,但我认为需要一个临时变量。我会建议类似:

int strToRevInt(int str, int rev)
{
if (str == 0)
return rev;

return strToRevInt(str / 10, rev * 10 + (str % 10));
}

void main()
{
int a = 123;
int d = strToRevInt(a, 0);
printf("%d", d);
}

关于c++ - 关于C中的任务递归(Visual Studio 15),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415369/

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