Fast Fibonacci recursion

前端 未结 9 1670

I\'m trying to recall an algorithm on Fibonacci recursion. The following:

public int fibonacci(int n)  {
  if(n == 0)
    return 0;
  else if(n == 1)
    ret         


        
9条回答
  •  太阳男子
    2020-12-08 00:08

    I found interesting article about fibonacci problem

    here the code snippet

    # Returns F(n)
    def fibonacci(n):
        if n < 0:
            raise ValueError("Negative arguments not implemented")
        return _fib(n)[0]
    
    
    # Returns a tuple (F(n), F(n+1))
    def _fib(n):
        if n == 0:
            return (0, 1)
        else:
            a, b = _fib(n // 2)
            c = a * (2 * b - a)
            d = b * b + a * a
            if n % 2 == 0:
                return (c, d)
            else:
                return (d, c + d)
    
    # added iterative version base on C# example
    def iterFib(n):
        a = 0
        b = 1
        i=31
        while i>=0:
            d = a * (b * 2 - a)
            e = a * a + b * b
            a = d
            b = e
            if ((n >> i) & 1) != 0:
                c = a + b;
                a = b
                b = c
            i=i-1
        return a
    

提交回复
热议问题