0
有人可以向我解釋遞歸如何在以下函數中工作嗎?具體來說,我感興趣的是當函數達到基本情況時會發生什麼。另外,爲什麼在這段代碼中使用了一個命名的let? (我不熟悉的命名讓)計劃車和cdr遞歸
(define (unzip list-of-pairs)
(if (null? list-of-pairs)
(cons '() '())
(let ((unzipped (unzip (cdr list-of-pairs))))
(cons (cons (car (car list-of-pairs)) (car unzipped))
(cons (cdr (car list-of-pairs)) (cdr unzipped))))))
也有一些可疑的實施。例如。嘗試'(unzip'((a b c)(1 2 3))); ==((a 1)(bc)(2 3))' – Sylwester
@Sylwester輸入對於過程是錯誤的,它需要一個_pairs_的列表,例如:''((1。2)(3。 4)(5.6))' –
所以它不是(un)zip,而是遞歸版本'(cons(map car lst)(map cdr lst))'。得到它了 :) – Sylwester