递归需要两个必要条件1、存在限制条件当满足这个条件递归不继续2、函数在每次递归后越来越接近限制条件例void my_strlen(){ my_strlen();}//会导致栈溢出#includestdio.h //编写函数不允许创建临时 变量求字符串长度 /* #includestring.h int main() { int lenstrlen(abc);//直接用库函数 printf(%d,len); return 0; } */ //参数部分写出指针形式两个都行 /* int my_strlen(char *str)//(char str[])参数部分写出数组形式 { int count0;//计数临时变量 我们需要运用递归 while(*str!\0)//当地址不是/0的地址时 继续循环 { count; str;//找下个字符 } return count; }*/ //a b c \0 递归思路 my_strlen(abc) //1 b c \0 1 my_strlen(bc) //1 1 c \0 11my_strlen(c) //1 1 1 \0 111my_strlen() //1 1 1 0 1110 int my_strlen(char *str) { if (*str!\0)//(*str\0) return 1my_strlen(str1);//return 0; else return 0;//return 1my_strlen(str1); } int main() { char arr[]abc;//a b c \0 int lenmy_strlen(arr); printf(%d,len); return 0; }