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

使用Haskell编写一个计算斐波那契数列的函数

发布时间:2023-12-10 00:57:08

下面是使用Haskell编写的计算斐波那契数列的函数:

-- 定义一个函数,接受一个整数n,返回斐波那契数列中第n个数字
fibonacci :: Int -> Integer
fibonacci n | n < 0     = error "请输入一个非负整数"
            | otherwise = fibs !! n
  where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

在这个函数中,我们使用了Haskell的无限列表和zipWith函数来生成斐波那契数列。函数fibs是斐波那契数列的无限列表,其中第一个元素是0,第二个元素是1,后面的元素则是前两个元素的和。

函数fibonacci接受一个整数n作为参数,通过fibs !! n来获取斐波那契数列中第n个数字。如果n小于0,函数会抛出一个错误。

下面是使用例子:

main :: IO ()
main = do
  putStrLn "请输入一个非负整数:"
  n <- readLn
  putStrLn $ "斐波那契数列中第" ++ show n ++ "个数字是:" ++ show (fibonacci n)

在这个例子中,我们通过readLn函数从标准输入读取一个非负整数n,然后调用fibonacci函数计算斐波那契数列中第n个数字,并将结果输出到标准输出中。

编译并运行上述代码,将会得到如下结果:

请输入一个非负整数:
10
斐波那契数列中第10个数字是:55

这个例子演示了如何使用Haskell编写一个函数来计算斐波那契数列,并且通过读取用户输入来实时获取斐波那契数列中的数字。