Sriks, I'm not sure I understand what you're saying. When you hit the return in myfunc() control passes back to main().
Here's a modified version of your program (with output added) and what the results were on one of my machines:
/* Begin rec.c */
#include <stdio.h>
void myfunc(int);
int main ()
{
puts("about to recurse (in main)"

;
myfunc(10);
puts("end of recursion (in main)"

;
return 0;
}
void myfunc (int i)
{
if (i == 1) {
puts("condition met, returning (in myfunc)"

;
return;
}
printf("recursing (i==%d) (in myfunc)\n",i);
myfunc (--i);
}
/* End rec.c */
Russ -143- uname -a
SunOS newsrhq 5.5.1 Generic_105428-01 sun4u sparc SUNW,Ultra-5_10
Russ -144- gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.2/specs
gcc version 2.95.2 19991024 (release)
Russ -145- gcc rec.c
Russ -146- ./a.out
about to recurse (in main)
recursing (i==10) (in my func)
recursing (i==9) (in my func)
recursing (i==8) (in my func)
recursing (i==7) (in my func)
recursing (i==6) (in my func)
recursing (i==5) (in my func)
recursing (i==4) (in my func)
recursing (i==3) (in my func)
recursing (i==2) (in my func)
condition met, returning (in my func)
end of recursion (in main)
Russ
bobbitts@hotmail.com