0
void fun1(struct Node* head)
{
if(head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}
當head-> next變成0後,如何向後打印,請說明流程?在回覆呼叫中head變爲0後會發生什麼?
void fun1(struct Node* head)
{
if(head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}
當head-> next變成0後,如何向後打印,請說明流程?在回覆呼叫中head變爲0後會發生什麼?
您必須根據調用堆棧的操作方式來考慮調用。
該功能在打印任何內容之前打印fun1
,因此在打印之前它會一直打印到基本情況。然後打印,因爲它在每次打電話時都有效;向後打印列表。
你可以閱讀代碼,如「打印下一個節點,如果有的話,然後打印這一個」。打印下一個節點的操作先打印下一個節點,直到列表結束。
它返回到函數調用後的位置,並且遞歸調用在* printf()之前*之前?你不明白什麼? –
你有沒有搜索如何遞歸的工作? – Stargateur
您是否嘗試在調試器中逐步完成代碼? – melpomene