我正试图用Haskell 解决Project Euler问题#92.我最近开始学习Haskell.这是我试图用Haskell解决的第一个Project Euler问题,但是我的代码片段在10分钟内也没有终止.我知道你不直接给我答案,但我应该再次警告我用c ++找到答案并不能给出欧拉的答案或解决欧拉的新逻辑.我只是好奇为什么那个人不能快速工作,我该怎么做才能让它更快?
{--EULER 92--}
import Data.List
myFirstFunction 1 = 0
myFirstFunction 89 = 1
myFirstFunction x= myFirstFunction (giveResult x)
giveResult 0 = 0
giveResult x = (square (mod x 10)) + (giveResult (div x 10))
square x = x*x
a=[1..10000000]
main = putStrLn(show (sum (map myFirstFunction a)))
Run Code Online (Sandbox Code Playgroud) 这是我关于haskell的第二个问题,我认为我的algorhythm并不坏,它在c ++和python中提供更快的结果,并且在haskell有一些问题它不能给我10 ^ 25(也许它给了但我不等那么多)和这个问题问我这个价值,请指导我解决这个家伙,谢谢你.
##Euler 169##
giveRes 0 _= 1
giveRes 1 _= 1
giveRes a x = if search a x
then send a x
else let res = if rem a 2 == 0
then (giveRes (quot a 2) x)
+
(giveRes (quot a 2-1) x)
else giveRes (quot a 2) x
in snd (head ((a,res):x))
search _ [] = False
search a (x:xs) = if a == fst x then True else search a xs
send a …Run Code Online (Sandbox Code Playgroud)