我試圖寫一個接受一個int n,返回運行從N到0評估期間堆棧溢出(循環遞歸?)。 OCaml的
這樣下來列表的功能是什麼,我有
let rec downFrom n =
let m = n+1 in
if m = 0 then
[]
else
(m-1) :: downFrom (m - 1);;
函數編譯好的,但是當我測試它與任何int它給我的錯誤 堆棧溢出在評估(循環遞歸?)。
我知道這是本地變量,但我不知道另一種方式來聲明它。謝謝!!!
謝謝!雖然我還沒有學習尾遞歸,但我將最後一條語句改爲(m-1):: downFrom(m-2),它的工作原理爲 – otchkcom
作爲提示,我會(爲了更好的樣式)簡單地消除m的定義,隨處取代n + 1,否則看起來很尷尬。 –
我修正了幾個拼寫錯誤,讓你的版本''downFrom'編譯。但是,它仍然會返回一個遞增的清單,而OP則要求遞減清單。 – jrouquie