一、通过递归的方式,逆向打印
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inverse(char *p)
{
if(p == NULL) //递归结束异常条件
return;
if(*p == '\0') //递归结束的条件
return;
inverse(p+1);
printf("%c", *p);
}
int main()
{
char buf[] = "abcdefg";
inverse(buf);
return 0;
}
二、递归和全局变量(把逆序的结果存入全局变量)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char dbuf[100];
void inverse(char *p)
{
if(p == NULL) //递归结束异常条件
return;
if(*p == '\0') //递归结束的条件
return;
inverse(p+1);
strncat(dbuf, p, sizeof(char));
}
int main()
{
char buf[] = "abcdefg";
memset(dbuf, 0, sizeof(dbuf));
inverse(buf);
printf("dbuf: %s\n", dbuf);
return 0;
}
三、递归和非全局变量(递归指针做函数参数)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inverse(char *p, char *bufresult)
{
if(p == NULL) //递归结束异常条件
return;
if(*p == '\0') //递归结束的条件
return;
inverse(p+1, bufresult);
strncat(bufresult, p, sizeof(char));
}
int main()
{
char buf[] = "abcdefg";
char dbuf[100];
memset(dbuf, 0, sizeof(dbuf));
inverse(buf, dbuf);
printf("dbuf: %s\n", dbuf);
return 0;
}