尾递归:
-
/*Bad use of recursion:Printing a linked list*/
-
/*No header*/
-
void
-
PrintList(List L)
-
{
-
if (L != NULL) {
-
PrintElement(L->Element);
-
PrintList(L->Next);
-
}
-
}
这个程序合法,表面无害,但如果链表L过大会越出栈空间,导致使程序崩溃。
用goto消除尾递归:
-
/*Bad use of recursion:Printing a linked list*/
-
/*No header*/
-
void
-
PrintList(List L)
-
{
-
top:
-
if (L != NULL) {
-
PrintElement(L->Element);
-
L = L->next;
-
goto top;
-
}
-
}
阅读(208) | 评论(0) | 转发(0) |