问题描述
- 递归求字符串长度问题,求大神解答
-
int length(char * str)
{
if (*str == '')
{
return 0;
}
else
{
return (1+length(++str));
}
}
char str[10]="abcde";
这个递归最后返回来的为什么会是5
不是应该返回0吗
求大神解惑
解决方案
解决方案二:
你还没有理解递归
最后一次是返回0
但是不是返回给main
而是返回给上一次递归
这样上一次递归就是1+0
再返回给上上层2+0
。。。
最后返回5
解决方案三:
这个函数被执行了6次
最后一次(正数第6次)返回0
倒数第二次(正数第5次)返回1+0=1
倒数第三次(正4)返回1+1 = 2
倒数第四次(正3)返回1+2 =3
倒数第五次(正2)返回1+3=4
倒数第六次(正1)返回1+4=5
时间: 2024-09-16 22:07:54