- 递归:函数自己调用自己的写法。特点是把大问题化小,减少程序量。
使用递归要满足:1.有限制条件;2.不能死递归。否则会栈溢出(stack overflow).
- 例题1.接受一个整型值(无符号),按顺序打印他的每一位。
#include<stdio.h>
#include<math.h>
#include<string.h>
void print(int n)
{
if(n>9)
{
print(n/10)//递归
}
printf("%d",n%10);
}
int main()
{
unsigned int = 0;
scanf("%d",&num);
print(num);
return 0;
}
- 例题2.Strlen的常规写法和递归写法。
1.常规写法
#include<stdio.h>
#include<math.h>
#include<string.h>
int my_strlen(int char*str)
{
int count=0;
while(*str!='\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "bit";
int len = my_strlen(arr);
printf("%d\n",len);
return 0;
}
2.递归写法
#include<stdio.h>
#include<math.h>
#include<string.h>
int my_strlen(int char*str)
{
if(*str!='\0')
{
return 1+my_strlen(str+1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "bit";
int len = my_strlen(arr);
printf("%d\n",len);
return 0;
}