我是Scheme新手,功能編程所以請溫和。 我想實現的功能是獲得一個列表和一個支點,並返回一個包含以下2所列出的清單:Scheme:按元素排序元素
一個用於爲小於或等於樞軸所有元素,
和一個對於所有比樞軸更大的元素。
所以我寫了下面的代碼(編輯(&工作)CODE - 問題解決了):
define helper (lambda (lst pivot)
(define lst1 null)
(define lst2 null)
(define my-split (lambda (lst pivot lst1 lst2)
(if (null? lst)
(list lst1 lst2)
(if (<= (car lst) pivot)
(my-split (cdr lst) pivot (cons (car lst) lst1) lst2)
(my-split (cdr lst) pivot lst1 (cons (car lst) lst2))))))
(my-split lst pivot lst1 lst2)))
我目前的問題是lst1
和lst2
是null
在運行結束,所以我想這個問題與行(cons (car lst) lst1)
& (cons (car lst) lst2)))
。
我在網上看到了一些使用一些我不允許使用的複雜命令的實現(是的,它是作業)。
請提供修復我的代碼而不是提供自己的代碼的方法。
謝謝
謝謝你的回答,但正如我所提到的,我不允許使用'set!',我試着給輸入參數添加'lst1'&'lst2',然後將它們作爲參數傳遞,但結果是相同的看我的編輯)。你能提供你提供的代碼樣本嗎? – Noam
@Noam你快到了。將最後一行的'(list lst1 lst2)'移到第一個'if'表達式的第一部分(替換'null')。 –
謝謝,已解決。 – Noam