我想創建下面的函數,即所有梳子,其行爲與示例中的相同。爲什麼我的代碼不工作?你能解決它或給你自己的代碼?如何獲得所有布爾值組合的列表?
(all-combs 0)
>> '(())
(all-combs 1)
>> '((0) (1))
(all-combs 2)
>> '((0 0) (0 1) (1 0) (1 1))
(define (all-combs1 n)
(cond
[(equal? n 0) '(())]
[else
(append (map (lambda (x) (cons 0 x)) (all-combs1 (- 1 n)))
(map (lambda (x) (cons 1 x)) (all-combs1 (- 1 n))))
]))
它的工作原理!我應該說n - 1而不是 - 1 n –
你正在調用'(all-combs1( - n 1))'兩次,所以你加倍執行時間。你可以改變條件的最後一個分支,如下所示:'(else(let((lst(all-combs( - n 1))))(append(map(lambda(x)(cons 0 x))lst )(map(lambda(x)(cons 1 x))lst))))))' – Renzo