【发布时间】:2016-11-29 08:16:39
【问题描述】:
我有一些代码:
int strlen_rec(char arr[])
{
if(arr[0]=='\0')
return 0;
else
return 1 + strlen_rec(&arr[1]) ;
}
线
return 1 + strlen_rec(&arr[1]) ;
让我很困惑。有人能解释一下它的作用吗?
【问题讨论】:
-
阅读递归。
-
并尝试使用调试器逐行执行代码。
-
这里没有问题!!!
-
在阅读递归时,还要注意作为递归一部分的每个连续函数调用所需的额外开销,并建议避免递归,除非程序解决方案令人望而却步。递归并没有错,它可以解决一些有趣的问题——也就是说,要注意它会带来额外的负担。
-
@DavidC.Rankin:在这里阅读“字里行间”时,我倾向于猜测 OP 需要先关注基础知识,然后再考虑与效率相关的考虑。