gpt4 book ai didi

list - 如何对结构列表中的数字求和? ( Racket )

转载 作者:行者123 更新时间:2023-12-02 07:43:17 25 4
gpt4 key购买 nike

我正在尝试使用递归函数对结构列表中的所有整数求和,但我一生都无法弄清楚。

(struct number (int))
(define ints (list (number 1)
(number 2)
(number 3)))

(define sum (λ (number)
(cond
((null? number) 0) ; Base Case
(#t (+ (number-int (car ints)) ; Take the first of the list
(sum (cdr ints))))))) ; Rest the list

我花了几个小时尝试不同的变体:

(cdr ints), i.e. (number-int (cdr ints)) for the last line

我相信正是这个导致了问题( (cdr ints)(number-int (cdr ints)) 都以 '(#<number> #<number>) 的形式返回一些内容。但似乎没有任何效果!

是否有一个过程可以以整数列表的形式返回列表的cdr,而不是 '(#<number> #<number>)

任何帮助将不胜感激。

最佳答案

试试这个:

(define sum 
(λ (lst)
(cond ((null? lst) 0)
(else (+ (number-int (car lst))
(sum (cdr lst)))))))

一些评论:

  • 使用 else 而不是 #t 作为 cond 表达式中的最后一个条件
  • 您将过程参数 number 的名称与您在外部定义的 ints 列表的名称混合了
  • 最好将其重命名为 lst 或其他名称,以明确您正在处理的列表

现在它按预期工作了:

(sum ints)
=> 6

关于list - 如何对结构列表中的数字求和? ( Racket ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com