斐波那契数列

问题描述:

斐波那契数列:又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2(n>=2n∈N*)即这个数列从第二项开始,每一项都等于前两项之和。
特别指出:0是第0项,不是第1项。

代码(递归):

# include 
int Fibonacci(int n);
int main(void)
{
    int n;
    printf("请输入n的值:");
    scanf_s("%d", &n);
    printf("第%d项的值为:%d\n", n,Fibonacci(n));
    return 0;
}
int Fibonacci(int n)
{
    if (n < 0)
    {
        return -1;
    }
    else if (0 == n)
    {
        return 0;
    }
    else if (1 == n)
    {
        return 1;
    }
    else
    {
        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
}

代码(循环):

# include 
int fib(int n);
int main(void)
{
    int n;
    printf("请输入n的值:");
    scanf_s("%d", &n);
    printf("第%d项的值为:%d\n", n,fib(n));
    return 0;
}
int fib(int n)
{
    int result[2] = {0,1};
    if(n < 2)
        return result[n];
    int fibOne = 0;
    int fibTwo = 1;
    int fibN   = 0;
    int i = 0;
    for(i = 2; i <= n; i++)
    {
        fibN = fibOne + fibTwo;
        fibOne = fibTwo;
        fibTwo = fibN;
    }
    return fibN;
}

你可能感兴趣的:(斐波那契数列)