gpt4 book ai didi

c - C 中递归函数的错误输出

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:07 25 4
gpt4 key购买 nike

我应该创建一个递归函数,使用 putchar() 而不是 printf 逐位打印整数。输出应该是 1234,但我得到的是 1234(笑脸)1234。为什么会这样?

此外,您可以在 printf 之外添加一个 '\n' 吗?

非常感谢。

#include <stdio.h>

int printnumber();

int main()
{
int n = 1234;
printnumber(n);
return 0;
}

int printnumber(int n) {
int x, y;
x = flip(n) % 10;
putchar(x);
y = flip(n) / 10;
if (y < 0)
printnumber(y);
}

int flip(int n)
{
if (n < 0) {
putchar('-');
n = -n;
}
if (n / 10)
flip(n / 10);
putchar(n % 10 + '0');
}

最佳答案

您的代码具有未定义的行为,因为声明为具有返回类型 int 的函数 flip 实际上不返回任何内容。

此外,函数 flip 似乎可以完成所有工作。所以不清楚函数printnumber是什么意思。

您可以简单地按以下方式定义函数

#include <stdio.h>

void print_number( int n )
{
if ( n < 0 )
{
putchar('-');
n = -n;
}

if ( n / 10 ) print_number( n / 10 );
putchar( n % 10 + '0' );
}

int main(void)
{
print_number( -1234 );


return 0;
}

输出是

-1234

关于c - C 中递归函数的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634085/

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