前言:作为IT行业的技术小白,深知需要不断学习的技术和知识很多很多,最近学习Python语言,便想起做学习笔记,本人博客多数均是个人原创文章,然而技术内容并非都是原创,写入博客仅作为个人学习笔记知识整理,亦希望有助于其他初级网友,技术大牛与大神们请绕道,不喜勿喷。
###经典故事
有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
其实如上问题也便是本文所要讲述的 斐波那契
数列的问题,斐波那契数列是这么一组数,
斐波那契数列(Fibonacci sequence),又称黄金分割数列
0、1、1、2、3、5、8、13、21、34、……
在数学上,费波那契数列是以递归的方法来定义:
$$F_0 = 0,(n=0)$$
$$F_1 = 1 , (n=1)$$
$$F_n = F[n-1]+ F[n-2] , (n=>2)$$
如此依据上述公式,有如下计算方法:
###python
方式1,
1 2 3 4 5 6 7 8 9 10 11
| def fib(n): a,b = 1,1 for i in range(n-1): a,b = b,a+b return a print(fib(10))
|
方式2
1 2 3 4 5 6 7 8
| def fib(n): if n == 1 or n == 2 : return 1 return fib(n-1)+fib(n-2) print(fib(10))
|
方式3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| def fib(n): if n == 1 : return [1] if n == 2 : return [1,1] fibs = [1,1] for i in range(2,n): fibs.append(fibs[-1],fibs[-2]) return fibs print(fib(10)) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
|
java
1 2 3 4 5 6 7 8 9 10 11
| public int fib(int n){ if(n<0){ return 0; } if(n==1||n==2){ return 1; } return fib(n-1)+fib(n-2) }
|