module Main
where
import System.Environment
fib :: Int -> Int
fib 1 = 1
fib 2 = 1
fib x = fib(x-2) + fib(x-1)
fib' 1 = [1]
fib' 2 = [1, 1]
fib' n = (x+y):xs
where xs@(x:y:_) = fib' (n-1)
main :: IO ()
main = do
argv <- getArgs
putStr ("fib' " ++ (head argv) ++ " = ")
print $ reverse $ fib' $ read $ head argv
putStr ("fib " ++ (head argv) ++ " = ")
print $ fib $ read $ head argv
*****************************************************
#include <stdio.h>
int fib (int x)
{
if (x == 1 || x == 2) {
return 1;
} else {
return fib(x-2) + fib(x-1);
}
}
main()
{
printf("%d/n", fib(40));
}
*************************************************
#include <stdio.h>
// 快速菲波那挈數列
// 會溢出,顯示負數
long _fib(int n, long a, long b)
{
long t;
if (n > 0) {
t = a + b;
printf(" %ld", t);
_fib(n - 1, b, t);
}
}
long fib(int n)
{
if (n < 0)
;
else if (n == 0)
printf("1");
else if (n == 1)
printf("1 1");
else {
printf("1 1");
_fib(n - 1, 1, 1);
}
printf("/n");
}
main(int argc, char *argv[])
{
int n;
if (argc >= 2) {
n = atoi(argv[1]);
} else {
printf("Enter n=");
scanf("%d", &n);
}
printf("fib(%d)=", n);
fib(n);
}