我对Haskell很新,并且不明白haskell如何处理递归。我已经在这个问题上工作了好几个月,只是想不通。我的项目将在几天后到期,所以我要求任何帮助或建议!我的项目描述是有7个“罪犯”,其中三个是“有罪”我必须随机显示7个罪犯中的三个,告诉三个人中有多少是有罪的,并询问用户是否想要猜测有罪的人或通过,直到所有猜测都正确。我已经弄明白了其他一切,我只是坚持如何使用递归函数从7重复显示3个randoms,请求输入,并检查它是否正确。
好的,从查看你给我的东西,我试着做一个小函数尝试使用递归作为一个循环,然后我将它实现到我的项目中,这就是我提出的:
main = do
num <- 7
print recursion(num)
let recursion a = do
putStrLn "guess my number!"
guess <- getLine
if a==guess
then print "good job"
return guess
else
recursion a
但是我在最后的行上得到了一些解析错误,你能告诉我我做错了什么吗? @stonemetal
答案 0 :(得分:1)
递归函数应该是简单的部分。您需要做的就是决定何时结束递归,然后再次调用该函数,如果该条件不成立。
let runGame gameData = do newGameData <- runOneIterationOfGame gameData
if gameOver newGameData then
return newGameData
else
runGame newGameData