Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何递归地遍历列表列表并以不同的方式组合列表_List_Dictionary_Recursion_Scheme_Traversal - Fatal编程技术网

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。