我想列出正方形列表。我可以用下面的代碼做到這一點:使用cons/car vs追加在球拍中創建列表
(define (makelistsq n)
(define outlist '())
(for ((i n))
(set! outlist (append outlist (list (* i i))))
)
outlist
)
(makelistsq 5)
輸出:
'(0 1 4 9 16)
然而,我所看到的,往往利弊和汽車關鍵字用於創建並添加到列表中。這種方法與上面的附加方法相比有什麼優勢嗎?所以,跟上面的更好或者相同:
(define (makelistsq2 n)
(define outlist '())
(for ((i n))
(set! outlist (cons (* i i) outlist))
)
(reverse outlist)
)
感謝您的回答/評論。
編輯:Cons element to list vs cons list to element in Scheme此頁面上應提到的是全部採用追加的是錯誤的:
對於那些需要在最後 添加一個元素(相信我罕見的情況下,這樣做一般意味着你認爲 算法錯誤)你可以使用追加
我看到你在努力獲得計劃的竅門。請抓住一本書(SICP,如何設計程序,小Schemer)並閱讀,直到您掌握在Scheme中編寫代碼的方式。到目前爲止,您正在嘗試像編程語言一樣編寫過程,並且在學習Lisp時絕對不是這樣。 –