2013-12-15 44 views
0

我被要求寫一個沒有邊界條件的遞歸函數。然後,我被問到是否有可能將內存分配綁定到正在創建的堆棧上,以便計算機不會掛起。如果是,那麼如何?遞歸堆棧內存分配

+0

所有這些問題都被問到你了!那麼你想從這裏得到什麼? –

+1

「無邊界條件」?所以它是永無止境的遞歸函數? –

+0

我想知道如果有可能那麼如何?那次我沒有回答這個問題。 – user3103842

回答

0

2個假設。 「無邊界條件」是指無限遞歸。 「電腦掛起」意味着堆棧溢出或應用程序崩潰。當你給CPU無限循環工作時,計算機總是會「掛起」。

沒有創建堆棧。它在那裏,當你執行遞歸調用時,你在那裏分配空間,(現在,這裏我可能是錯誤)的參數,返回值和要返回的點,也許還有一些(wiki:callstack)。所創建的是那些包含上下文信息的堆棧幀。

您可以創建參數所需的空間並返回0.但我認爲不可能跳過返回點。因此,對於遞歸的每個級別,您總是需要非零內存。

使無限遞歸成爲可能的唯一方法就是使所需的堆棧幀大小爲0,這是我認爲不可能的。