所以我需要制作一个描述为的函数
invFib :: Integer -> Maybe Integer
它接受一个整数并在斐波那契数列中查找它(如下面的函数所述)
fibs :: [Integer]
fibs = 0:1:(zipWith (+) fibs (tail fibs))
并返回数字示例的索引:
invFib 0
~>Just 0
invFib 1
~>Just 1
或Just 2
map invFib [54, 55, 56]
~>[Nothing,Just 10,Nothing]
invFib (fibs !! 99)
~>Just 99
我尝试制作一个接受整数列表并吐出索引的函数,但它一直失败。有什么想法吗?
这是我尝试过的功能-
findNum :: [Integer] -> Integer -> Integer -> Integer
findNum x:xs y z = if x == y
then z
else findNum xs y (z+1)
编辑:该函数冻结不在斐波那契数列中的数字,当输入 1 时也只显示 1 个值
invFib :: Integer -> Maybe Integer
invFib n = if n < 0
then Nothing
else fmap fromIntegral (elemIndex n fibs)