斐波那契问题(兔子问题) |
您所在的位置:网站首页 › 斐波那契数兔子的由来 › 斐波那契问题(兔子问题) |
14天阅读挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 学习日记目录 学习日记 一、斐波那契数列的概念 二、斐波那契的复现 1、递归实现 2、迭代实现 3、总结 三、兔子问题 一、斐波那契数列的概念斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 斐波那契数列指的是这样一个数列: 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711…… 它的规律是:这个数列从第 3 项开始,每一项都等于前两项之和。 在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*),显然,斐波那契数列是一个线性递推数列。
我们给出斐波那契数列的推导公式: 常用的实现斐波那契数列的方法分为两大类:递归和循环。 1、递归实现#C语言版本 #include int F(int n) //斐波那契数列函数 递归形式 { if(n == 0) //初始化 return 0; if(n == 1 || n == 2) return 1; return F(n-1) + F(n-2); //如果n != 1 && n != 2 进行递归运算 } int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d\n", F(n)); } return 0; }#python版本 import time def Fibonacci(i): if i==0: return 0 elif i==1: return 1 else: return Fibonacci(i-1)+Fibonacci(i-2) def main(): a=time.time() for i in range(1,101): print(Fibonacci(i)) b=time.time() print("running time:%s Seconds"%(b-a)) main() 2、迭代实现#C语言版本 #include int fibonacci(int n) //定义斐波那契函数 { if(n == 0) //定义初始值 return 0; if(n == 1 || n == 2) return 1; int a=1,b=1,c=0; //定义初始值 //用一个for循环,a、b分别为前两项,c为前两项之和,得到c后进行交换更新a、b的值,进行n次交换即可。 for(int i=3;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |