#include<stdio.h>
int call(int);
int main()
{
int n=9;
printf(“1 function”);
call(n);
getchar();
return 0;
}
int call(int n)
{
if(n<=0)
return 0;
else
call(–n);
printf("\n%d function",n);
call(–n);
return 0;
}
take a look at this link…and pls ask a more specific doubt…is it like you did not understand the flow or like what???
EDIT
i will explain for n=4!!!
1) call(4)//through main
2) in call(4)
call(--4) i.e. call(3)
3) in call(3)
call(--3) i.e. call(2)
4) in call(2)
call(--2) i.e. call(1)
5)
call(--1) i.e. call(0)
6) in call(0)
return 0 i.e. return to call() in the step 5
7) print(n) i.e. 0 and then call (--0) i.e. call(-1)
8) in call(-1)
return 0 i.e. return to call in 7th step
9) return from 7th step to call in 4th step
10) print(n) i.e. 1 and then call(--1) i.e. call(0)
11) in call(0)
return 0 i.e. return to 4th step
12) return from that to 3rd step
print(n) i.e. 2 and then call(--2) i.e. call(1)
13) in call(1)
call(--1) i.e. call(0)
14) in call(0)
return 0 i.e. return to step 13
15) print 0 and call(--0) i.e. call(-1)
16) return 0 i.e. return to 13th step from there return to step 12 hen return to step 3 then return to step 2
17) print(n) i.e. 3 and then call(--3) i.e. call(2)
18) in call(2)...call(--2) i.e. call(1)
19) in call(1)...call(--1) i.e. call(0)
20) in call(0) return 0 i.e. return to step 19
21) print 0 and call(--0)..i.e. call(-1) it will return 0 then from step 19 return to step 18
22) print 1 and call(--1)..i.e. call(0) it will return 0 then from step 18 return to step 17 then to step 2 and then to step 1...and that is your output!!!!
0
1
2
0
3
0
1
pls dont ask for a higher number my brain’s Stack will overflow…
hope it helps…
2 Likes
was trying to explain by making a diagram but was getting confused…so had to write down…hope u understand…if not then i’ll try to draw the diagram using the above steps!!!