递归调用原理不懂?求高手解答
#include<stdio.h>age(int n)/*这是这个函数调用原理不懂每次到这里我就掐壳了*/
{
int c;
if (n == 1)
c = 10;
else
c = age(n - 1) + 2;/*这里是怎么执行的*/
printf("%d\n",c);
return (c);
}
int main()
{
printf("%d", age(5));
}

程序代码:
/* 不使用string.h 反转字符串*/
#include <stdio.h>
/* 计算字符串长度 */
int strLen(char *p) {
int len = 0;
while(*(p + len) != '\0') {
len++;
}
return len;
}
/* 循环反转交换值 */
void reverse(char *p, int len) {
char t;
int i = 0;
while(--len > i) {
t = *(p + i);
*(p + i) = *(p + len);
*(p + len) = t;
i++;
}
}
/* 递归反转交换值 */
void foo(char *p, int len) {
char t, *pt = p;
if(--len > 0) {
t = *pt;
*pt = *(pt + len);
*(pt + len) = t;
foo(++pt, --len);
}
}
/* 直接反转打印不交换值 */
void revprt(char *p, int len) {
while(--len >= 0) {
printf("%c", *(p + len));
}
printf("\n");
}
int main(void) {
char str[] = "ASCII_string: abcde\n1 2 3 4 5";
int len = strLen(str);
puts(str);
reverse(str, len);
puts(str);
foo(str, len);
puts(str);
revprt(str, len);
return 0;
}
