gpt4 book ai didi

haskell - 这个备忘录工作正常吗?

转载 作者:行者123 更新时间:2023-12-05 00:33:33 25 4
gpt4 key购买 nike

我一直在努力解决 Project Euler #14现在在 Haskell 有一段时间了,但由于某种原因,我无法让它工作。不久前我使用 Groovy 解决了这个问题,我想我在这里使用的方法基本相同。然而,即使只是找到前 10,000 个长度,程序运行速度也非常慢,我现在真的不知道为什么。我想我正在使用内存功能,但是即使 GHCI 中的数据集很小,我的内存也用完了。

这是我到目前为止所想出的。

collatz = (map collatz' [0..] !!)
where collatz' n
| n == 1 = 1
| n `mod` 2 == 0 = 1 + collatz (n `div` 2)
| otherwise = 1 + collatz (3 * n + 1)

我会运行 map collatz [1..1000000]得到问题的答案,但是 map collatz [1..10000]给我一个内存不足错误,并且还需要几秒钟才能完成运行。

如果有人能给我一些关于这个程序的问题的见解,那就太好了!我已经尝试了很多东西,但我只是被卡住了,需要帮助。

谢谢!

最佳答案

内存在这里工作得很好。事实上,它运行得如此之好,以至于它填满了你的所有内存。 Collat​​z 序列的中间项变得相当大。出现在以 1 开头的任何序列中的最大项高达 1000000是数字 2974984576 .所以这是您尝试在内存中构建的列表的长度。

另一方面,在没有内存的情况下直接实现 Collat​​z 函数应该可以很好地解决这个问题。

关于haskell - 这个备忘录工作正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849664/

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