书写递归的两个必要条件:
设置限制条件,当满足时,递归停止
每次递归调用后,更加接近限制条件
不创建临时变量,求字符串长度
思路:
字符串以’\0’结尾,若不为’\0’,则+1;
若为’\0’,则返回;
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int str(char* a)//数组传参,传过去数组的地址,所以是指针
{
if (*a != '\0')//指针没指向'\0'
return 1 + str(a + 1); //指针后移
else//指针指向'\0'
return 0;
}
int main()
{
char arr[] = "cat";//['c'],['a'],['t'],['\0']字符串中有四个元素,但'\0'是字符串结束标志,不计数
printf("%d\n", str(arr));
return 0;
}
图解:
结果: