C++递归函数来实现统计字符串中第一个空字符前面字符长度
例如:
char buf[]={'a','b','c','d','e','f','\0','x','y','z'};
当输入字符串buff,N=10或者20,期待输出结果是6;当输入N=3或5时,期待输出结果是3或5。
代码实现如下:
#include <iostream>
int mystrlen(char* buf,int N)
{
if(buf[0]==0||N==0) return 0;//空字符串出现返回0
else if(N==1) return 1;
int t=mystrlen(buf,N/2);//折半递归取函数
if(t<N/2) return t;
else//反之取下面一个字符并继续递归
{
return (t+mystrlen(buf+N/2,(N+1)/2));
}
}
int main()
{
char buf[]={'a','b','c','d','e','f','\0','x','y','z'};
int k;
k=mystrlen(buf,20);
std::cout<<k<<std::endl;
return 0;
}
测试结果如下: