Fast Fibonacci recursion

前端 未结 9 1675

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-07 23:54

    duedl0r's algorithm translated to Swift:

    func fib(n: Int, previous: (Int, Int) = (0,1)) -> Int {
        guard n > 0 else { return 0 }
        if n == 1 { return previous.1 }
        return fib(n - 1, previous: (previous.1, previous.0 + previous.1))
    }
    

    worked example:

    fib(4)
    = fib(4, (0,1) )
    = fib(3, (1,1) )
    = fib(2, (1,2) )
    = fib(1, (2,3) )
    = 3
    

提交回复
热议问题