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 Answers
+ 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.