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)x2+...+f(n)xn+... 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)−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^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)−xG(x)−x2G(x)=f(1)x+(f(2)−f(1))x2+(f(3)−f(2)−f(1))x3+...+ G(x) - x G(x) - x^2G(x) = f(1)x + (f(2)-f(1))x^2 + (f(3)-f(2)-f(1))x^3 + ... + G(x)−xG(x)−x2G(x)=f(1)x+