Fibonacci数算法解释

时间:2014-07-09 06:06:47

标签: algorithm fibonacci

如何解释由下面的函数1打印的字符串中FibonacciRecursion(n)的数量等于n - 斐波纳契数?

public static void FibonacciRecursion(int n)
{
    if(n <= 1) 
    {
        System.out.print(n);
    }
    else
    {
        FibonacciRecursion(n-1);
        FibonacciRecursion(n-2);
    }
}

例如,FibonacciRecursion(6)打印10110101101106 - 斐波那契数字为8

1 个答案:

答案 0 :(得分:1)

你可以通过归纳来证明这一点。设ONES(x)为二进制字符串1x的个数。 F(0)F(1)的输出符合您提到的属性,即ONES(F(0)) = FIB(0)ONES(F(1)) = FIB(1)

现在,如果您假设所有m<=nn>=1ONES(F(m)) = FIB(m)那么

ONES(F(n+1)) = ONES(F(n) concat F(n-1))
             = ONES(F(n)) + ONES(F(n-1))
             = FIB(n) + FIB(n-1)
             = FIB(n+1),

完成导入。