使用Haskell编写一个函数来计算斐波那契数列
发布时间:2023-12-09 20:31:48
斐波那契数列是一个经典的数学问题,定义如下:斐波那契数列的前两个数是0和1,后面的每个数都是前两个数的和。
在Haskell中,可以使用递归函数来求解斐波那契数列。下面是一个使用Haskell编写的计算斐波那契数列的函数fibonacci:
fibonacci :: Int -> Int
fibonacci n
| n == 0 = 0
| n == 1 = 1
| otherwise = fibonacci (n - 1) + fibonacci (n - 2)
上述函数中,使用了模式匹配来处理不同的情况。当n等于0时,返回0;当n等于1时,返回1;否则,返回fibonacci (n - 1) + fibonacci (n - 2),即前两个数的和。这样就能不断递归地计算出斐波那契数列的每一项。
接下来,我们可以使用该函数来计算斐波那契数列的前若干项,并输出结果:
main :: IO ()
main = do
let sequence = [fibonacci n | n <- [0..10]] -- 计算斐波那契数列的前11项
putStrLn "Fibonacci sequence:"
mapM_ print sequence -- 输出每一项
在上述代码中,我们使用列表推导式来计算斐波那契数列的前11项,并将结果存储在sequence列表中。然后,使用mapM_函数和print函数将列表中的每一项打印到控制台。
编译并运行上述程序,可以得到斐波那契数列的前11项:
Fibonacci sequence: 0 1 1 2 3 5 8 13 21 34 55
这里只计算了前11项,你可以根据需要修改代码中的范围。
这是一个简单的例子,帮助你理解如何使用Haskell编写斐波那契数列函数。在实际应用中,如果需要计算更大范围的斐波那契数列,可能需要考虑使用更高效的算法,例如使用动态规划。
