递归在斐波那契数列和归并排序的应用
递归在斐波那契数列和归并排序的应用
引入知识:
斐波那契数列:1202年,斐波那契的《算盘书》中提到的兔子数列即著名的斐波那契数列
月:1 2 3 4 5 6 7 8…
小:1 0 1 1 2 3 5 8…
大:0 1 1 2 3 5 8 13…
共:1 1 2 3 5 8 13 21…
比例: 1 0.5 0.67 0.6 0.625…趋近0.618(黄金分割数)
数学表达式:a1=a2=1,a(n) = a(n-1)+a(n-2)
生活应用:花瓣个数为斐波那契数,树枝个数也为斐波那契数,向日葵的的叶子个数也为斐波那契数…
用于理解计算机中的递归:
此时我们要计算fib(3):fib(3) = fib(2)+fib(1),分解问题去找fib(2)和fib(1)的值,fib(1)=1,fib(2)分解为找fib(1)和fib(0)的值,最终得到fib(3)的值为2,这个过程就是递归.
我们再看一个例子:recursive sum
这个代码的目的就是计算list[10, 20, 30]中元素的sum
我们用图示来看recursion problem solving的思路:
接下来,我们用递归的思路取代之前文章中merge sort的方法:
之前的代码:
此时第二段代码用递归的思路代替:
区别为图1到图2: