#include fun (char *a) {if (*a) {fun(a+1); printf("%c",*a); } } main() {char s[10]="abcd#include fun (char *a){if (*a){fun(a+1);printf("%c",*a);}}main(){char s[10]="abcd";printf("处理前字符串=%s\n处理后字符串=",s);fun(s); printf("\n");}

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 13:44:52

#include fun (char *a) {if (*a) {fun(a+1); printf("%c",*a); } } main() {char s[10]="abcd#include fun (char *a){if (*a){fun(a+1);printf("%c",*a);}}main(){char s[10]="abcd";printf("处理前字符串=%s\n处理后字符串=",s);fun(s); printf("\n");}
#include fun (char *a) {if (*a) {fun(a+1); printf("%c",*a); } } main() {char s[10]="abcd
#include
fun (char *a)
{if (*a)
{fun(a+1);
printf("%c",*a);
}
}
main()
{char s[10]="abcd";
printf("处理前字符串=%s\n处理后字符串=",s);
fun(s); printf("\n");
}
这是一个实现倒叙输出字符串的,如abcd,输出dcba!
fun (char *a)
{if (*a)
{fun(a+1);
printf("%c",*a);
}
这是怎么实现的,fun(a+1)是什么意思?

#include fun (char *a) {if (*a) {fun(a+1); printf("%c",*a); } } main() {char s[10]="abcd#include fun (char *a){if (*a){fun(a+1);printf("%c",*a);}}main(){char s[10]="abcd";printf("处理前字符串=%s\n处理后字符串=",s);fun(s); printf("\n");}
fun(a+1)是递归调用的,fun(char *a)定义形参为指针变量,当执行fun(a)时,把a的地址传入,
当执行fun(a+1)是把a的地址加一个char大小.
你的调用fun()函数后执行的是:
abcd
把a地址给fun,然后判断字符是否为'\0’,不为的话
把字符串下一个b地址给fun,如此判断……
知道d的地址传完后,把'\0'传到fun判断成立不再递归了,接着就是返回到printf语句了
记着,这里是从后开始,第一个输出就是d,接着依次是c,b,a.然后结束
这是一个很简单的递归调用.
写个简单例子给你:
int fun(int n)
{
if(n