欢迎访问宙启技术站
智能推送

使用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编写斐波那契数列函数。在实际应用中,如果需要计算更大范围的斐波那契数列,可能需要考虑使用更高效的算法,例如使用动态规划。