我寫一個遞歸碼冒泡排序(從小到大通過交換)
我有一個代碼做冒泡排序只是一次泡泡方案
(define (bubble-up L)
(if (null? (cdr L))
L
(if (< (car L) (cadr L))
(cons (car L) (bubble-up (cdr L)))
(cons (cadr L) (bubble-up (cons (car L) (cddr L))))
)
)
如果我把一張表這(8 9 4 2 6 7)) - >'(8 4 2 6 7 9)
現在我是代碼,它返回最後一個號碼列表
EX試圖寫一個代碼來做(泡泡L)N次(列表中的整數數量)
我有這個公司de:
(define (bubble-sort-aux N L)
(cond ((= N 1) (bubble-up L))
(else (bubble-sort-aux (- N 1) L)
(bubble-up L))))
(bubble-sort-aux 6 (list 8 9 4 2 6 7)) -> ' (8 4 2 6 7 9)
但是遞歸似乎沒有發生,因爲它只排序一次!
任何建議將受到歡迎,我只是難住!
「我正在寫一個遞歸代碼到Bubble Sort」 - 不要! –
@MitchWheat AveryPoole在Scheme中編寫,其中tail-call優化是由規範強制的。迭代通常是通過Scheme中的尾遞歸實現的。 Recation _is_是在Scheme中實現這一點的自然事物。 –
有沒有其他方法?剛開始編寫代碼,尾遞歸是我學到的唯一方法。 @MitchWheat –