大家好!今天来打印斐波那契数。
首先,斐波那契数:
斐波那契数列(Fibonacci sequence),又称 黄金分割 数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义: F (0)=0, F (1)=1, F (n)= F (n - 1)+ F (n - 2)( n ≥ 2, n ∈ N*)
我将用两种方法来打印斐波那契数。
第一种:
函数递归:
下面以图加以理解:
此时进入if语句和else语句,return Fib( 3 )+ Fib( 2 ) ,再次调用本身。
此时进入if语句和else语句, else语句返回1,if语句返回Fib(2)+ Fib(1),再次调用本身。
此时都符合else语句,所以返回2,开始回归,然后回到Fib(3)+ Fib(2),Fib(3)= 2,Fib(2) = 1,得出3。递归就是递推加回归。
如果求第50个数,则会等好久,这是因为当调用函数时,会不断向栈区申请空间,当栈空间耗尽时,就会溢出,就是栈溢出(stack overflow)。
所以,要换一种方式,使用一种非递归的方式,我这里用到迭代的方式来完成。
第二种:
迭代:
迭代属于循环的一种。
迭代的效率比递归高,但是不如递归的方便。所以,根据情况来选择,不要动不动就递归。
希望对你有所帮助!!!^__^
病骨质离纱帽宽,孤臣万里客江干。
-------《病起书怀》陆游