簡體   English   中英

球拍:從2個列表創建遞歸列表

[英]Racket: Recursive List Creation from 2 Lists

我應該創建一個函數,該函數將兩個列表作為參數,並通過組合輸入列表來返回對列表,其中,對是給定索引處元素的組合。

輸入示例:

(zipper '(1 2 3) '(4 9 5 7))

示例輸出:

'((1 4) (2 9) (3 5)) 

如果一個輸入列表比另一個輸入列表長,則將忽略較長列表中的其他元素。 實現必須是遞歸的。

我創建的代碼:

(define (zipper list1 list2)
(if (or (empty? list1) (empty? list2))
  '()
(list (list (zipper (rest list1) (rest list2)) ))))

輸出:

'((((((((()))))))))
'((((((()))))))
'()

有人可以幫忙嗎? 我也嘗試過使用'cons'將元素放在一起,所以不確定這些元素是如何丟失的。 我是Racket的新手。 謝謝。

非常簡單,我們要做的就是創建一個函數,如果任一列表為空,該函數將作為基本情況返回空,否則,我們將(第一個list1,第一個list2)限制為遞歸調用。

(define (zipper list1 list2)
  (cond [(or (empty? list1)
             (empty? list2)) empty]
        [else (cons 
               (cons (first list1)
                     (first list2)) ;; List of first elements
               (zipper (rest list1) (rest list2)))]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM