C++ 递归和预减量运算符

C++ 递归和预减量运算符,c++,function,recursion,decrement,C++,Function,Recursion,Decrement,我有这个功能: void m(int n) { if(n > 0) m(--n); cout << n << " "; //for n = 5 --> output is: 0 0 1 2 3 4 } void m(int n) { 如果(n>0) m(--n); cout(0) { m(--n); CUT首先要注意的是:在C++中,如果在 > 语句之后不放置括号,则只有下一行将在语句中。 例如: if(x > 0)

我有这个功能:

void m(int n)
{
    if(n > 0)
      m(--n);
      cout << n << " "; //for n = 5 --> output is: 0 0 1 2 3 4
}
void m(int n)
{
如果(n>0)
m(--n);
cout(0)
{
m(--n);

CUT

首先要注意的是:在C++中,如果在<代码> > 语句之后不放置括号,则只有下一行将在语句中。

例如:

if(x > 0)
   cout << 1;
   cout << 2;
if(x>0)

CUT

看起来像是用python语法混淆的,其中代码的范围>如果< /COD>由缩进决定。在C(和C++,C语言,java等许多语言)中,范围是一个语句(结束于<>代码>;<代码>),除非你使用卷曲括号<代码> {< /C> >和<代码> }。

。在您的代码的第一个变体中,
听起来您可能需要学习如何使用调试器来逐步完成代码。有了一个好的调试器,您可以逐行执行程序,并查看它与预期的偏差。如果您要进行任何编程,这是一个必不可少的工具。进一步阅读:修复缩进为了更好地理解第一个代码片段,请重复。您是对的,
m(n-)
始终调用m(n),并且在减量
n
之后,会出现一个nothing,因为
cout
将在递归结束时生成,但递归没有完成。因此,它看起来像:input:m(5)和m(n-)它是menas:m(4)或者它永远不会是“4”因为当输入为“5”时,它总是超出范围?
if(x > 0)
   cout << 1;
   cout << 2;
if(x > 0)
{
  cout << 1;
  cout << 2;
}