gpt4 book ai didi

c - C中使用递归反转数字中的数字

转载 作者:行者123 更新时间:2023-11-30 19:10:00 26 4
gpt4 key购买 nike

我是 C 语言新手,我正在尝试使用递归来反转整数中的数字(例如,123 变成 321)。我还需要使用名为reverseDigits 的void 函数来打印结果。该函数成功反转了数字,我的问题是当我尝试打印结果时,它会打印多次。例如,它不是只打印“321”,而是打印“321 321 321”。我注意到它打印的结果与数字中的位数相同。 “12”输出“21 21”,“123”输出“321 321 321”等等。我无法弄清楚是什么导致了这种情况的发生。我只需要打印一次。是什么原因导致这种情况发生?主函数中的reverseDigits(123)只是为了查看输入该数字时会出现什么结果,它不会出现在最终程序中。 (不确定这是否相关)。

#include <stdio.h>
#include <stdlib.h>

int reverse=0;
void reverseDigits(int number){
int remainder;
if (number!=0){
remainder = number % 10;
reverse = (reverse*10)+remainder;
reverseDigits(number/10);
printf("%i ",reverse);
}
}

int main() {
reverseDigits(123);

return 0;
}

最佳答案

如果有printf("%i ",reverse);,您将为递归的每一层进行打印。如果递归 3 次(即 3 位数字),您将打印 3 次。您应该只在递归的底部打印:

if (number!=0){
...
} else {
printf("%i ",reverse);
}

Here is a live example.

小旁注:下次使用调试器。它可以更容易地找出小程序无法运行的原因。

关于c - C中使用递归反转数字中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076369/

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