"打印1到n"功能打印1次两次

gr3*_*bo1 1 c++ recursion

 void printInt(int n){
   if(n==1)
     cout<<1<<" ";
   else
     printInt(n-1);
     cout<<n<<" ";
  }
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

 1 1 2 3....n
Run Code Online (Sandbox Code Playgroud)

我在一张纸上写出了函数的实际步骤,但我不知道如何在控制台中打印额外的1(Visual Studio 2010).这是来自过去的硬件解决方案,所以这只是为了理解它是如何工作的.

Car*_*rum 9

你需要一些大括号:

   if(n==1)
   {
     cout<<1<<" ";
   }
   else
   {
     printInt(n-1);
     cout<<n<<" ";
   }
Run Code Online (Sandbox Code Playgroud)

否则第二个cout即使在运行时也会运行n==1.严格来说,不需要围绕第一个 括号cout,但在这种情况下我喜欢它的风格.

编者注:通过在调试器中单步执行函数可以轻松解决此问题.