int length(char * str)
{
if (*str == '\0')
{
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