gpt4 book ai didi

haskell - 理解sum函数的实现

转载 作者:行者123 更新时间:2023-12-01 07:37:31 24 4
gpt4 key购买 nike

我开始尝试使用 Haskell 并遇到了以下 sum 的实现功能:

sum [] = 0
sum (x:xs) = x + sum xs

然后有一个解释,显示了该函数在真实示例中的行为方式:
sum [1,2,3]

1 + (sum [2,3])
1 + (2 + sum [3])
1 + (2 + (3 + sum []))
1 + (2 + (3 + 0))
= 6

我不明白,为什么每次都是 sum [x]被调用,列表变小 1 个元素?

我唯一的假设是,当构建 (x:xs)被执行,然后元素 x的列表,不仅被检索,而且被删除(类似于堆栈 pop() 方法。),但我不确定这一点。

最佳答案

在符号中 x:xs , x 为链表的头部,为 1 项,xs 为链表的尾部,为 0 项或更多项的链表。

由于递归调用是在 xs 上进行的,因此每个递归级别将问题大小集减少 1。

关于haskell - 理解sum函数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590477/

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