通过使用额外指针在线性时间内的斐波那契

时间:2017-12-28 07:23:44

标签: swift recursion fibonacci

我有一个函数来查找斐波那契数列中的第n个数,我递归调用该函数。总和存储在一个类变量中,每次调用函数时我都会增加一个额外的指针。这个额外的指针是守门员,它指示何时退出循环的基本情况。使用该算法得到的性能是O(n)线性时间和O(1)空间。我得到了预期的答案,但如果从编码面试的角度来看这是一个可接受的解决方案,我感到很困惑。

var x = 0
var sum = 0
func myFibonacci(of n: Int, a: Int, b:Int) -> Int {
  x+=1
  if (x == n) {
    return sum
  } else {
    sum = a+b
    return myFibonacci(of: n, a: b, b: sum)
  }
}

let finalAns = myFibonacci(of: 9, a: 0, b: 1)
print("The nth number in Fibonacci sequence is \(finalAns)")

输出:34

时间复杂度:O(n)线性时间

空间复杂度O(1)

这是编码面试的可接受的解决方案吗?

0 个答案:

没有答案