gpt4 book ai didi

list - 无法理解 Haskell 中的原始递归定义

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

我很清楚什么是原始递归定义 是,但是我似乎仍然无法理解它。
例如,我似乎无法向自己解释如何执行以下操作(但我似乎能够做到):

Exercise:

Define the functionproductIt :: [Int] -> Intwhich gives the product of a list of integers, and returns 1 for an empty list; why is this particular value chosen as the result for the empty list?


我(当然)想出了解决方案:
productIt :: [Int] -> Int
productIt [] = 1
productIt (x:xs) = x * productIt xs
这非常适合练习中的问题。然而,我似乎仍然无法理解最后一行。
任何关于如何思考这一点的想法将不胜感激。

最佳答案

在英语中,您可以将最后一行读为:

The product of a list of numbers is the first number times the product of the rest of the numbers. And if there are no numbers, let's just say the product is 1.



像这样将其转换为英语通常可以帮助我理解递归函数的工作原理和原因。您还可以使用脑中的 Haskell 解释器对其进行评估:
  productIt [2,3,4]
= 2 * (productIt [3,4])
= 2 * (3 * (productIt [4]))
= 2 * (3 * (4 * (productIt [])))
= 2 * (3 * (4 * (1)))
= 2 * (3 * (4))
= 2 * (12)
= 24

关于list - 无法理解 Haskell 中的原始递归定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5932549/

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