9-17_算法实验报告
斐波那契数列
已知:
f ( n ) = { f ( n − 1 ) + f ( n − 2 ) ; ( n > 2 ) 1 ; ( n = 1 , n = 2 ) f(n) = \begin{cases}f(n-1) + f(n - 2);(n > 2)\\ 1;(n = 1, n = 2)\end{cases} f(n)={
f(n−1)+f(n−2);(n>2)1;(n=1,n=2)
请使用 生成函数法 求该函数的时间复杂度。
解答
对于斐波那契数列,已知:
f ( n ) = f ( n − 1 ) + f ( n − 2 ) ; ( n > 2 ) f(n) = f(n - 1) + f(n-2);(n > 2) f(n)=f(n−1)+f(n−2);(n>2)
构造一个函数为:
G ( x ) = f ( 1 ) x + f ( 2 ) x 2 + . . . + f ( n ) x n + . . . G(x) = f(1)x + f(2)x^2 + ... + f(n)x^n+ ... G(x)=f(1)x+f(2)x2+...+f(n)xn+...
则有:
G ( x ) − x G ( x ) − x 2 G ( x ) = f ( 1 ) x + f ( 2 ) x 2 + . . . + − f ( 1 ) x 2 − f ( 2 ) x 3 − . . . − − f ( 1 ) x 3 − f ( 2 ) x 4 − . . . − G(x) - x G(x) - x^2G(x) = f(1)x + f(2)x^2 + ...+ \\ - f(1)x^2 - f(2)x^3 - ... - \\ - f(1)x^3 - f(2)x^4 - ... - \\ G(x)−xG(x)−x2G(x)=f(1)x+f(2)x2+...+−f(1)x2−f(2)x3−...−−f(1)x3−f(2)x4−...−
整理之后可得:
G ( x ) − x G ( x ) − x 2 G ( x ) = f ( 1 ) x + ( f