递归在斐波那契数列和归并排序的应用
引入知识:
斐波那契数列: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)**
(生活中的应用:花瓣个数为斐波那契数,树枝个数也为斐波那契数,向日葵的的叶子个数也为斐波那契数…)
用于理解计算机中的递归:
def fib(n):
if n == 0:
return 0
if n == 1:
return 1
return fib(n-1) + fib(n-2)
此时我们要计算fib(3):fib(3) = fib(2)+fib(1),将fib(3