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