1.用栈帮助求解斐波那契数的非递归算法:
Fib(n)=n, n=0或=1;
Fib(n)=Fib(n-1)+Fib(n-2),n>=2;
递归算法与求阶乘一样,比较简单,下面我们看非递归算法:
上图为求解斐波那契数的递归求解过程
不难看出其实fib(n)的结果其实就是最底层所有的fib(1)和fib(0)的和。于是我们想办法依次遍历所有的fib(0)和fib(1),并把它们求和就得出了fib(n)的结果。其中我们借助栈来记录遍历过程中走过的路径。
2.算法细化
1.用栈帮助求解斐波那契数的非递归算法:
Fib(n)=n, n=0或=1;
Fib(n)=Fib(n-1)+Fib(n-2),n>=2;
递归算法与求阶乘一样,比较简单,下面我们看非递归算法:
上图为求解斐波那契数的递归求解过程
不难看出其实fib(n)的结果其实就是最底层所有的fib(1)和fib(0)的和。于是我们想办法依次遍历所有的fib(0)和fib(1),并把它们求和就得出了fib(n)的结果。其中我们借助栈来记录遍历过程中走过的路径。
2.算法细化