首次stackoverflow用戶,但偶爾潛伏者,希望你們可以幫我。請幫我理解方案:沒有參數?
因此,我的任務的第一部分是將所有「前導零」放在列表中。
例如:(0 0 0 0 0 1 0 1 0 1) - >(1 0 1 0 1)
要做到這一點,我認爲使用IF語句來檢查的第一個元素是否是一個0或不是,遞歸調用列表的其餘部分,直到沒有更多的前導零。由於我基本上不知道如何在Scheme中編程,通過搜索互聯網,我想出了你在下面看到的內容。但是,當我運行它時,DrRacket告訴我沒有任何參數 - 我認爲這是一個語法錯誤..或者更可能,我不知道我在做什麼。所以,如果你能幫助我,我會很感激!
>(define zz
> (lambda (n)
> (if (= (car (n)) 0)
> (zz (cdr (n)))
> ((n)))))
>
>(remove '(0 0 0 0 1 0 1 0))
我DrRacket得到的錯誤是:
「程序的應用程序:預計程序,因爲:(0 0 0 0 1 0 1 0)(無參數)」
再次感謝很多! (如果格式有點奇怪PS對不起...)
編輯
好了,改變了一些東西,我現在得到一個「期望類型作爲第一個參數,因爲:(0 0 0 0 0 1 0 1 0);其他參數是:0「錯誤標記在我的if語句。
>(define zz
> (lambda n
> (if (= (car n) 0) <----- here
> (zz(cdr n))
> (n))))
EDIT 2
>(define zz
> (lambda (n)
> (if (= (car n) 0)
> (zz (cdr n))
> n)))
它的工作原理,非常感謝你!
@ Scheme.Is.Strange對不起 - 我打給'='的電話已關閉。檢查更新的示例。 – new123456 2012-03-28 23:36:53
是的,你的代碼是完美的,你介意解釋scheme語法是如何工作的嗎?我知道我的問題含糊不清,問了很多,但只是一些提示會很好。 – 2012-03-28 23:40:30
好吧,我想我會更熟悉Scheme,非常感謝! – 2012-03-28 23:46:00