Fibonacci數列

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);
}

發佈了39 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章