List 如何递归地遍历列表列表并以不同的方式组合列表
这是一项后续行动 我有一些列表或“记录”被附加到一个空列表中,它们的格式都是List 如何递归地遍历列表列表并以不同的方式组合列表,list,dictionary,recursion,scheme,traversal,List,Dictionary,Recursion,Scheme,Traversal,这是一项后续行动 我有一些列表或“记录”被附加到一个空列表中,它们的格式都是(Matthew(AL 21 32))。我现在正试图编写一个函数,该函数将使用fetchRecord,以找到所需的记录,然后将记录中的两个数字相乘。然而,我当前的代码只有在我在第一条记录上获得名称时才起作用,但它会为之后的任何记录返回一个空列表。这是我的密码: (define (Mult_Num name) (cond [(empty? db) #f] [else (* (car(cdr(car(cd
(Matthew(AL 21 32))
。我现在正试图编写一个函数,该函数将使用fetchRecord
,以找到所需的记录,然后将记录中的两个数字相乘。然而,我当前的代码只有在我在第一条记录上获得名称时才起作用,但它会为之后的任何记录返回一个空列表。这是我的密码:
(define (Mult_Num name)
(cond
[(empty? db) #f]
[else (* (car(cdr(car(cdr (fetchRecord name)))))
(car(cdr(cdr(car(cdr (fetchRecord name)))))))]))
我该如何解决这个问题?另外,如果某个记录有两组数据,如:(John(AL 25 40)(CA 40 67))
,那么如何获得25*40和40*67等,即使它有两组以上的数据?我知道这将是递归,但不太确定如何设置它
这是我的fetchRecord函数:
(define (fetchRecord name)
(cond
[(empty? db) #f]
[(equal? (car (car db)) name) (car db)]
[else( car (car db)) name (cdr db)]))
这也可能与:
(define db '())
我也有这个,但如果我有两个以上的名字在这里,它自己搞砸了:
(define(showRec name) ;displays everything following a name.
(cond
[(empty? db) #f]
[(equal? (car (car db)) name) (cdr (fetchRecord name))]
[else (cdr (car(fetchRecord name)))])
)
主要问题是依赖于
fetchRecord
,它不仅不起作用,而且不是有效的方案:else
子句应该只有1个参数,而不是3个
如果一个函数使用递归来处理列表的
rest
,而它不使用递归,那么它就不会处理列表的rest
。如果该函数(在本例中,Bill\u Amt
)不使用递归,那么就没有递归不调用自身。@ScottHunter我正在尝试在启动递归之前找出错误所在,因为它会不断给出错误。请阅读上的帮助,因为您的问题(就像现在一样)不清楚。您好,根据SO指南,您应该发布代码、函数调用序列(即程序),它的输出/错误消息,并描述所需的输出。换句话说,这里的问题应该是具体的。有点像,“如果我叫这个,我会得到这个,但我期待着”。最好的方法是完全按照原样复制并通过REPL(即交互式提示)成绩单片段。或者使用Ideone.com。