本质:自己调用自己的函数
必要条件:必须有限制条件;每次递归后将越来越接近这个限制条件
例题一:随便输入一个多位数,输入它的每一位数
基本思想:
/*
print(1234)
-->print(123) 4
-->print(12) 3 4
-->print(1) 2 3 4
*/
代码如下:
#include <stdio.h>
void print(int n) //设定print函数的功能是能够打印每一位数字
{
if (n > 9)
{
print(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
unsigned int num = 0;
printf("Please input a long number:\n");
scanf("%d", &num);
print(num);
}
例题二:不创建临时变量,求字符串的长度
基本思想:
/*
my_strlen("bit")
-->1+my_strlen("it")
-->1+1+my_strlen("i")
-->1+1+1+my_strlen("\0")
*/
代码如下:
int my_strlen(char* str) //设置函数功能为计算字符串长度
{
if (*str != '\0') //传入的不是整个字符串,而是首地址,所以形参类型是指针char* ,str*得到了首个字符
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "bit";
int len = my_strlen(arr); //传入的不是整个字符串,而是首地址
printf("the len of %s = %d\n",arr, len);
return 0;
}