《编程之美》学而思 - 斐波那契数列(Fibonacci sequence)

《编程之美》学而思 - 斐波那契数列(Fibonacci sequence)

flyfish

另一个篇 利用矩阵求斐波那契数列

int FibonacciRecursion(int n)//递归
{

    if (n > 2)
        return (FibonacciRecursion(n - 1) + FibonacciRecursion(n - 2));
    else if (n==2)
        return 1;
    else if (n == 1)
        return 0;

    return 1;
}
int FibonacciRecurrence(int n)//递推
{
    if (n == 2)
        return 1;
    else if (n == 1)
        return 0;

    int p1 = 0;
    int p2 = 1;
    int result = 0;
    for (int i = 3; i <= n; i++)
    {
        result = p1 + p2;
        p1 = p2;
        p2 = result;
    }

    return result;
}

//黄金分割
这里写图片描述

这里写图片描述

《编程之美》学而思 - 斐波那契数列(Fibonacci sequence)_第1张图片

这里写图片描述

const double r1 = 1.61803398874989484820458683436565;
const double r2 = -0.61803398874989484820458683436565;
const double s = 2.23606797749979;  //std::sqrt(5.0);
double FibonacciGoldenRatio(int n)//黄金分割
{
    return ((std::pow(r1, n) - std::pow(r2, n)) / s);
}

你可能感兴趣的:(有趣的问题,基础算法)