私はSchemeと関数型プログラミングを使い慣れていますので、やさしくしてください。 私はリストを取り機能とピボットを実装し、以下の2つのリストを含むリストを返すようにしようとしている:スキーム:ピボット要素を並べ替える
以下またはピボットに等しいすべての要素の一つ、
と1をピボットよりも大きいすべての要素に対して
だから私は、次のコード(EDITED(& WORKING)CODE - PROBLEM解決しよう)を書いた:
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)))
です。
私はいくつかの複雑なコマンドを使用するいくつかの実装を見ましたが、私は使用できません(はい、宿題です)。
独自のコードを提供するのではなく、コードを修正する方法をご提案ください。
ありがとう
ありがとうございます。私が言及したように、Imは 'set! 'を使用できません。入力パラメータに' lst1'と 'lst2'を追加して引数として渡しましたが、結果は同じです私の編集を参照してください)。あなたが提供しているもののコードサンプルを提供できますか? – Noam
@Noamあなたはほとんどそこにいます。 '(list lst1 lst2)'を最後の行から最初の 'if'式の最初の部分に移動します(' null'を置き換える)。 –
ありがとうございました。 – Noam