我一直在尝试使用迭代和takeWhile函数来实现这个函数的小型实现。它不一定要使用这些函数,我只是想把它变成一行代码。我可以看出其中的模式,但似乎无法利用它,除非基本上做相同的代码,只是用迭代代替递归。
fun2 :: Integer -> Integer
fun2 1 = 0
fun2 n
| even n = n + fun2 (n `div` 2)
| otherwise = fun2 (3 * n + 1)
任何帮助都将非常感激。我已经为此苦苦挣扎了数小时。谢谢。