2017-06-14 56 views
0
void fun1(struct Node* head) 
{ 
if(head == NULL) 
    return; 

fun1(head->next); 
    printf("%d ", head->data); 
} 

當head-> next變成0後,如何向後打印,請說明流程?在回覆呼叫中head變爲0後會發生什麼?

+4

它返回到函數調用後的位置,並且遞歸調用在* printf()之前*之前?你不明白什麼? –

+1

你有沒有搜索如何遞歸的工作? – Stargateur

+2

您是否嘗試在調試器中逐步完成代碼? – melpomene

回答

2

您必須根據調用堆棧的操作方式來考慮調用。

該功能在打印任何內容之前打印fun1,因此在打印之前它會一直打印到基本情況。然後打印,因爲它在每次打電話時都有效;向後打印列表。

0

你可以閱讀代碼,如「打印下一個節點,如果有的話,然後打印這一個」。打印下一個節點的操作先打印下一個節點,直到列表結束。

相關問題