我有一個非常簡單的函數來找出一堆整數的最大非負值。我想將此函數轉換爲遞歸函數。 有幾點要記住:堆棧上的遞歸函數
- 運行功能之前,我們已經初始化
num
,但還沒有分配任何價值了。並請,我們不應該依賴於一個事實,即C的溫度將自動在一定條件下分配0至num
- 運行函數的棧
s
爲空後,我們必須存儲在num
- 我的最大非負值 「M C和數據結構是初學者,所以請好:)
這是迭代函數:
void max_stack(stack *s, int *num){
*num = 0;
int aux = 0;
while (!emptyStack(*s)){
aux = top(*s);
pop(s);
if (aux>*num){
*num = aux;
}
}
}
當前存儲的值,我不知道你爲什麼會想這個變換更大遞歸函數,當你現在的解決方案比遞歸函數更適合C語言時... –
@AnttiHaapala家庭作業需求也許? –
@AnttiHappala:我想更好地理解遞歸,並希望從迭代函數獲得更多流暢的遞歸和相反的結果。就是這樣。這個問題的目的是爲了學習。 我列舉的限制是確保兩個函數100%相等。 – Peter