斐波拉契数列f(n)的定义为:f(0)=1, f(1)=1,当n>1时,f(n)=f(n-1)+f(n-2)。
最简单的递归算法为:(python)
把n看作问题实例的规模,把加法操作的次数作为f(n)的时间代价,该算法中计算fib(n)的时间代价约等于计算fib(n-1)+fib(n-2)的时间代价,即计算fib(n-1)和fib(n-2)的时间代价之和,说明计算fib(n)的时间代价大致等比于斐波拉契数列中f(n)的值。根据已有结论:
则f(n)的时间代价为指数代价。
另一个简单的递推算法:
for循环中第n-1次,输出f1为斐波拉契数列的f(n)项。
该算法计算f(n)循环只需要做n-1次,时间复杂度与n成线性关系。