对于递归的理解就是循环,函数就是循环体的一部分。
相对于循环体来说就是参数少。推出机制就是判断语句,其中的退出机制更比循环灵活,没有明确的次数。
递归最大的优点就是只知道判断条件,而且结果从后往前输出。如果用循环就需要设置数值或者栈来保存数据。
一般不用返回确定值,只是过程打印出来。
题目1:不调用系统函数,把字符串逆序打印出,例如“ABCDabcd123”打印出“321dcbaDCBA”
程序:
/************************************/
//while(1){}死循环,为在dev-c++看到结果
/************************************/
#include<stdio.h>
int test(char *s)
{
if(*s=='/0')return 0;
s++;
test(s);
printf("%c",*(s-1));
}
int main(void)
{
char *s="ABCDabcd123";
test(s);
while(1){};
}
计算字符串的个数:
程序
#include<stdio.h>
int test(char *s)
{
static int i;
if(*s=='/0')return 0;
s++;i++;
test(s);
return i;
}
int main(void)
{
char *s="ABCDabcd123";
printf("%d",test(s));
while(1){};
}
这个用递归有点烦,直接用while循环
#include<stdio.h>
int test(char *s)
{
int i=0;
while(s[i]!='/0')i++;
return i;
}
int main(void)
{
char *s="ABCDabcd123";
printf("%d",test(s));
while(1){};
}
一般知道循环次数的用for,知道条件用while,还有递归是万能的。