只有用水将心上的雾气淘洗干净,荣光才会照亮最初的梦想。
——加西亚·马尔克斯
最近沉迷于算法,总是想着实现与优化,今天想到了斐波那契数列,原来没咋多想,现在回头再看看能不能输出点新花样?!
什么是斐波那契数列大家都知道,我最开始了解以及实现的时候写的是递归加法实现,如下代码都不陌生:
func recursive(num int) int {if num < 1 {return 0}if num == 1 || num == 2 {return 1}return recursive(num-1) + recursive(num-2)}
思路分析:传入一个数,它是自顶向下开始算的,比如传入40,它会先得出第40-1和第40-2,即第29和第28这两个数, 随着传入到函数recursive的值逐渐减少,直到减少到1或2时才真正的到计算的终点。整个过程实际上是个二叉树。
过程分析:以传入5为例:因为5!=1因此进行递归,开始计算第4和第3这两个数,即在代码