2012-09-25 35 views
1

我在這裏找不到類似的問題,但我正在嘗試在一個類的方案中編寫程序,所以提示將非常讚賞!我基本上對如何實現這一點感到困惑,但這裏是它應該如何工作的例子。 (index 5)應該返回列表(1 2 3 4 5)。我有幾個想法,他們可以工作嗎?計劃 - 返回越來越多的列表的函數

  1. 我使參數成爲一個全局變量,每次我遞增調用該函數時都會增加它。到目前爲止,我遇到的問題是使用set!返回一個列表,但輸出看起來像這樣(#value #value ....)

  2. 編程一個簡單的遞歸函數,給出列表(5 4 3 2 1),然後將其反轉,但是我會能夠做到這一點?

回答

0

我會用解決方案2,因爲它是迄今爲止最乾淨,最簡單的選項。你只需要找出遞歸。提示:基本案例達到(index 0),應返回空列表。倒車後可以通過把實際的遞歸的輔助函數來完成:

(define (index-r n) 
    ...) 

(define (index n) 
    (reverse (index-r n))) 

(或者使用named- let環)

+0

感謝拉斯!沒有意識到計劃中存在內置的反向功能 – steve

0

程序一個簡單的遞歸函數給出列表(5 4 3 2 1),然後扭轉它,但我能做到這一點?

爲什麼不直接寫一個遞歸函數給出列表(1 2 3 4 5)? 在「僞代碼」,所以,我不爲你做:

f(x) = cons x (f(x+1)) 
f(5) = (list 5) 

,然後調用f(1) ...