递归函数有一个特点:递推然后回溯。
反向输出字符串这个例子就很好体现了递归的性质:
键盘输入asdfg,(由于内存缓冲区)递归函数拿getchar()读取字符,然后输出,就会得到gfdsa.
我们使函数实现,设读取5个字符
进入函数f(5)>>>>执行getchar(),f(4),putchar().
f(4)>>>>getchar, f(3),putchar().
f(3)>>>>getchar,f(2),putchar()
f(2)>>>>getchar,f(1),putchar()
f(1)>>>>getchar,putchar.
直到f1执行完,返回到f2,f2执行完返回f3。。。
所以a是最先读取的,但由于中间有f4,f3,f2,f1,执行完后,返回f5的putchar语句。输出a
c是局部变量,函数间的c不会相互影响。