递归算法是通过让函数调用自身,将复杂问题拆分为一个个简单的同类步骤,下面用一道题目训练这种思维。
题目:设计一个函数实现strlen()函数的作用。
思考:题目要求设计一个函数(不妨取名为my_strlen),输入一个数组之后能够输出其长度。初步的思路是:函数my_strlen首先检测第一个字符是不是\0,如果是则返回0,如果不是则返回1+my_strlen(str+1),通过重复这一简单的同类步骤从而实现递归,直到检测到\0。代码如下:
#include <stdio.h>
int my_strlen(char* str)
{
if(*str != '\0')
{
return 1 + my_strlen(str+1);
}
else
return 0;
}
int main()
{
char arr[]="abc";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}