0
Flow of C++ code
Can someone explain the flow of this C++ code? I am having trouble understanding the flow, and why it flows the way it does. #include <iostream> using namespace std; void func(int x) { if (x > 0) { func(--x); cout << x; } else { return; } } int main() { func(5); return 0; }
3 Respostas
+ 3
/*
If you unwrap all the calls to func(5), it works very similar to this inline code:
*/
#include <iostream>
using namespace std;
int main() {
  int x=5;
  --x;
  { int x=4;
    --x;
    { int x=3;
      --x;
      { int x=2;
         --x;
        { int x=1;
          --x;
          { int x=0;
          }
          cout<<x; //0
        }
        cout<<x; //1
      }
      cout<<x; //2
    }
    cout<<x; //3
  }
  cout<<x; //4
  return 0;
}
/*
The if statement that is used in the recursive function is there to determine when to stop nesting the calls and to start backing out. In this case, when x<=0.
*/
+ 3
Some answers from this stackoverflow thread might help !
https://stackoverflow.com/questions/53022298/why-recursion-occurs-in-reverse#:~:text=This%20happens%20because%20each%20function,get%20printed%20in%20reverse%20order.
+ 1
Brian, this is really neat, thanks! I think this is the most logical way to think about it, in code blocks.






