2 qq 30587385 qq_30587385 于 2016.04.02 00:27 提问

递归求字符串长度问题,求大神解答

int length(char * str)
{
if (*str == '\0')
{
return 0;
}
else
{
return (1+length(++str));
}
}
char str[10]="abcde";
这个递归最后返回来的为什么会是5
不是应该返回0吗
求大神解惑

3个回答

CSDNXIAON
CSDNXIAON   2016.04.02 00:32

strlen求字符串长度问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

YYecust
YYecust   2016.04.02 00:31

你还没有理解递归
最后一次是返回0
但是不是返回给main
而是返回给上一次递归
这样上一次递归就是1+0
再返回给上上层2+0
。。。
最后返回5

stadyhungry
stadyhungry   2016.04.02 00:47

这个函数被执行了6次
最后一次(正数第6次)返回0
倒数第二次(正数第5次)返回1+0=1
倒数第三次(正4)返回1+1 = 2
倒数第四次(正3)返回1+2 =3
倒数第五次(正2)返回1+3=4
倒数第六次(正1)返回1+4=5

Csdn user default icon
上传中...
上传图片
插入图片