0
C programming
void main (){ int a =3; fun(a); } void fun(int n){ if(n>0){ fun(--n); printf("%d ",n); } } Why the output : 012
4 Answers
+ 5
FIRST READ THIS:
Recursive functions. What an interesting part of programming. Look:
in void main you call the function with n = 3
Now you call fun:
void fun(3) {
if (n > 0 (true)) {
fun(--n); // n now is 2
prinf(â%dâ, n); // this line isnât executed yet because you called fun in the previous line
}
}
//NOW n = 2
void fun(2) {
if (n > 0 (true)) {
fun(--n); // n now is 1
prinf(â%dâ, n); // this line isnât executed yet because you called fun in the previous line
}
}
void fun(1) {
if (n > 0 (true)) {
fun(--n); // n now is 0, but when n reached if block it was 1. Calls fun(0)
prinf(â%dâ, n); // this line isnât executed yet because you called fun in the previous line
}
}
void fun(0) {
if (n > 0 (false)) {
// this isnât executed
}
}
Wait a moment Iâm continuing this in the next message
+ 5
LAST READ THIS:
Now that void fun(0) didnât continued the recursion, the printf line of each fun() call is executed.
void fun(1) {
if (n > 0 (true)) {
fun(--n); // n now is 0. This line is already executed.
prinf(â%dâ, n); // it prints the value of n, 0. It doesnât print a new line. Now the output is 0.
}
}
void fun(2) {
if (n > 0 (true)) {
fun(--n); // n now is 1. This line is already executed.
prinf(â%dâ, n); // it prints the value of n, 1. It doesnât print a new line. Now output is 01.
}
}
void fun(3) {
if (n > 0 (true)) {
fun(--n); // n now is 2. This line is already executed.
prinf(â%dâ, n); // it prints the value of n, 2. It doesnât print a new line. So the output is 012.
}
}
// END OF RECURSION
Output of the code:
012
+ 1
Thank you , for answer
0
The code use the stack memory , by branches instructions