gpt4 book ai didi

c++ - 为什么下面的程序会无限循环?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:16 24 4
gpt4 key购买 nike

当我执行这个 belo 程序时,它无限期地打印 5。为什么?是因为减量没有发生还是在减量发生之前函数调用正在发生?

我已经尝试了另一种制作fun(--n)的方法,它给了我正确的答案。但为什么它不适用于 fun(n--)

void fun(int n)
{
if(!n)
{
cout << n << " " << endl;
}
else
{
cout << n << " "<<endl;
fun(n--);
}
}

int main()
{
int n = 5;
fun(n);
system("pause");
return 0;
}

最佳答案

你需要做 foo(--n) 而不是 foo(n--)

  • --n将n的值减1,然后发送减后的值
  • n-- 将减少 n 的值,但发送预先减少的值值(value)。

所以当您执行 foo(n--) 时,您减少了 n 的值,但是在递减之前将 n 发送给 foo 函数。你可以猜到这将永远存在

void fun(int n)
{
if(!n)
{
cout << n << " " << endl;
}
else
{
cout << n << " "<<endl;
fun(--n);
}
}

int main()
{
int n = 5;
fun(n);
system("pause");
return 0;
}

要了解更多关于 n----n 之间区别的信息,请阅读 here

关于c++ - 为什么下面的程序会无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225877/

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