對於Scheme而言,我很新,而且我在編寫作業的一部分時遇到了麻煩。我有一個圖G給我一個列表,格式如下:((node1 node2 weight1)(node3 node4 weight2)...)。我試圖編寫一個函數,以這種格式返回此圖中所有節點(V)的列表:(node1 node2 node3 ...)。該函數只能將圖(G)作爲輸入。Scheme:從嵌套列表中檢索元素
所以我想我可以通過增加內G中的每個嵌套列表的第一個和第二個元素,五,遞歸地做到這一點這裏是我寫:
(define nodes-of
(lambda (G)
(if (null? G)
()
(begin (add-to-set (cadar G) (nodes-of (cdr G)))
(add-to-set (caar G) (nodes-of (cdr G))))))
我覺得這是錯的,因爲第一次遞歸只涉及(cadar G),第二次涉及(caar G),並且返回值將僅由開始時的第二個語句(如果我沒有弄錯)設置。
add-to-set是我之前爲作業寫的一個函數,它添加一個元素到列表中,如果它沒有在列表中存在。 (例如:add-to-set n S,這會將n加到S上)
有人能幫助我嗎? (順便說一句,我不允許使用多個讓我們,讓*或設置)
很好的答案,謝謝! – bleyzn
@bleyzn樂意提供幫助 – oobivat