递归调用原理不懂?求高手解答
#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; }