【正确答案】
【答案解析】递归是一种自己调用自己的方式,有点像死循环的嵌套。如果题目没有要求,最容易想到的方法是使用一个for循环,对字符串进行遍历,当遇到"/0"结束,最终记录字符串的长度,程序示例如下:
#include<stdio.h>
int Strlen(const char *str)/*使用了一个int型变量len*/
{
int len:0;
if(str==NULL)
return 0;
for(;*str++!="/0";)
{
len++;
}
return len;
} .
int main()
{
printf("%d/n",Strlen("amc"));
return 0;
}
程序的输出结果:
3
上例中,使用了临时变量,因为题目要求不能使用任何变量,所以上述方法不可取,可以采用递归的思想来实现。程序示例如下:
#include<stdio.h>
int Strlen(const char* s)
{
if(*s!="/0")
return 1+Strlen(++s);
else
return 0;
}
int main()
{
printf("%d/n",Strlen("amc"));
return 0;
}
程序的输出结果:
3
还可以将上述递归方式简化为如下所示的表现形式:
int Strlen(const char* s)
{
return *s=="/0"?0:(1+Strlen(++s));
}