gpt4 book ai didi

c - 我无法理解 printf 的递归行为

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

我无法理解为什么我的代码输出是 2,2,3 并且当我删除 u++ 时它的输出是 2,5,5 我在 Windows 上使用 code_block 7 与海湾合作委员会

我尝试试运行我的代码,但它的输出与我计算的不同

int f(int);
int u = 1;

int main()
{
int n = 3;

//scanf("%d", &n);

f(n);

}

int f(int n)
{
if (n == 0)
{
return 2;
}

else
printf(" %d \n", f(n - 1));
u++;
}

我期望2,1,0可能是我错了,但我无法理解为什么输出是2,2,3,当我删除u++时,它会造成很大的困惑对我来说

最佳答案

n != 0路径中,您的函数没有显式返回值,并且返回的值将是未定义的。

我也不清楚为什么当 n==0 时你返回 2 - 你对这个值没有做任何事情,而且它看起来是任意的。

考虑一下:

int f( int n )
{
if( n != 0 )
{
n-- ;
printf( " %d \n", n );
n = f( n ) ;
}

return n ;
}

它更简单(没有 else block ),并且具有带有显式定义的返回值的单点退出。

关于c - 我无法理解 printf 的递归行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722895/

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