我很難學會在計劃中編程。我的教授說我一直陷入程序思維的陷阱。我知道他是對的。我想學習如何做到這一點,然而,閱讀書對我來說變得不直觀,因爲這些應該是簡單的項目,不應該需要大量的閱讀和研究。如果我知道如何跟蹤輸出,我該如何開始創建我的功能? (Scheme)
概念上,我明白我的跟蹤函數應該是什麼樣子。 (雖然我可能是錯的) 在這裏,我正在研究一個名爲ndelete的程序,它接收一個列表並返回刪除每個第n個元素的列表。
下面我追溯了我認爲我的功能應該是什麼樣子。
ndelete('(a b c d e) 2)
(a b c d e)
> (b c d e)
> > (c d e)
> > > (d e)
> > > > (e)
> > > > > ()
< < < < < () ; return null
< < < < (e) ; return e 1
< < < (e) ; return 'd 2 removed 'd,
< < (c e); return 'c 3
< (c e) ; return 'b 4 removed'b
(a c e) ; return 'a 5
我覺得我應該知道這件事很容易,而且很令人沮喪。也許,有人可以指引我走向正確的方向,或向我展示如何利用我理解的概念。
這是我的企圖代碼。我有點隨意地用一些我認爲可以從我的教授的例子中使用的示例代碼組合在一起。
(define x '(1 2 3 4 5 6 7 8 9 10))
(define ndelete(lambda (alist n)
(if '()
(car alist)
(ndelete (cdr alist)
(- n 1))
)))
(ndelete x 10)
你不能只用2個變量。您需要第三個變量來保持元素的數量,同時保留跳躍計數。下面是一個示例解決方案:http://stackoverflow.com/a/35366463/13 –