Я пытаюсь написать процедуру листьев Хаффмана; процедура возвращает список пар из созданного дерева Хаффмана. Пример того, как это работает
(huffman-leaves sample-tree)
->((A . 8) (C . 5) (B . 1) (D . 1))
То, что я придумал, но заблокировало сценаристов...
(define (huffman-leaves tree)
(define (huffman-get-pairs current-branch pairs)
(if (or (null? tree) (null? current-branch))
pairs
(let ((next-branch
(get-branch (car current-branch) current-branch)))
(not (member? next-branch pairs)
(if (leaf? next-branch)
(cons (append pairs next-branch)
(display pairs)
(huffman-get-pairs (cadr current-branch) pairs))
(huffman-get-pairs next-branch pairs))))))
(huffman-get-pairs tree '()))
(member? item 'list) #if item in list return #t else #false
Я знаю, что делаю что-то не так, но не вижу этого. Как я могу остановить поиск в дереве Хаффмана в схеме? Любой совет, что я должен делать по-другому?
(list 'Leaf Char Frequency)
или: -(list 'Node HuffmanTree HuffmanTree)
. (Я уверен, что этот пример определения данных не тот, который вам нужен; он просто предназначен для иллюстрации стиля. - person pnkfelix   schedule 12.03.2013