//思路:
//递归:
//定义一个指针指向字符串;
//随着指针的移动,向下传递参数,重复调用函数自身;
//遇到递归边界为止,向上传递函数的返回值;
//最后返回函数调用结果;
//非递归:
//定义一个变量count初始化为0,用以记录求得的字符串长度;
//通过指针遍历字符串,指针每向后移动一位,count加1,直到字符串为空;
//最后返回count的值
#include<stdio.h>
#include<stdlib.h>
//递归实现strlen函数
int recursion_strlen(char* str){
if (*str == '\0'){ //定义递归边界(即指针指向为空)
return 0; //返回值为0
}
return 1 + recursion_strlen(str + 1); //递归调用递归实现strlen函数
}
//非递归实现strlen函数
int non_recursion_strlen(char* str){
int count = 0; //变量count用以保存字符串长度
while (*str != '\0'){ //若字符串不为空
count += 1; //count加1(字符串长度加1)
++str; //指针向后移一位
}
return count; //返回值为字符串长度
}
//主函数
int main(){
int ret; //变量ret接收函数调用返回值
char str[] = "abcdefg"; //定义字符串并初始化
ret = recursion_strlen(str); //ret接收递归实现strlen函数调用返回值
printf("%d\n", ret); //打印输出结果
ret = non_recursion_strlen(str); //ret接收非递归实现strlen函数调用返回值
printf("%d\n", ret); //打印输出结果
system("pause");
return 0;
}