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

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

2个回答

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问