js 斐波那契数列(兔子问题) 两种方法解决

青青子衿
青青子衿
青青子衿
109
文章
7
评论
2015年4月12日18:25:45 评论

对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路。

希望看完这篇文章之后会对你有帮助。

 什么是斐波那契数列 :

答: 斐波那契数列,又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……

 

题目:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?

  已知兔子的规律为数列: 1,1,2,3,5,8,13,21...

 

 

答:首先我们得知道这道题的需求和步骤

 

      需求:一个数列当前项等于前两项之和。求第12项。      

      步骤:
      1.定义三个变量,然后两个初始化值。第三个作为存储使用
      2.先把第二个变量存储进入第三个变量汇总,第二个变量重新赋值成为第一个和第二个之和
      3.把存储好的第三个变量赋值给第一个变量。
      4.执行12次(因为前两项不需要计算,所以只需要执行10次)。

 

 

解析:

1.定义三个变量,然后两个初始化值。第三个作为存储使用

我们可以把这个数列想象成推箱子游戏

js 斐波那契数列(兔子问题) 两种方法解决

js 斐波那契数列(兔子问题) 两种方法解决
2.先把第二个变量存储进入第三个变量中
js 斐波那契数列(兔子问题) 两种方法解决
      然后把第二个变量重新赋值成为第一个和第二个之和。  
js 斐波那契数列(兔子问题) 两种方法解决
      3.把存储好的第三个变量赋值给第一个变量。
js 斐波那契数列(兔子问题) 两种方法解决

js 斐波那契数列(兔子问题) 两种方法解决

 

   以此类推到最后一项

js 斐波那契数列(兔子问题) 两种方法解决

 

  

 

利用for循环 代码如下:

 

//1.定义三个变量,然后两个初始化值。第三个作为存储使用
    var temp;
    var num1 = 1;
    var num2 = 1;
    //2.先把第二个变量存储进入第三个变量汇总,第二个变量重新赋值成为第一个和第二个之和
    for(var i=1;i<=10;i++){
        temp = num2;
        num2 = num1 + num2;
        //3.把存储好的第三个变量赋值给第一个变量。
        num1 = temp;
        //4.执行10次。(因为前两项不需要计算,所以只需要执行10次)
    }

    alert(num2);

第二种方法:(数组)

var arr = [];                      //申明一个数组 arr
arr[0]=1;                          //给数组arr[0]赋值:1
arr[1]=1;                          //给数组arr[1]赋值:1
for (var i=1;i<=10;i++){           //创建一个循环语句 已经定义前两月兔子的数量 只需要循环剩余十次
 arr[i+1]=arr[i]+arr[i-1];         //循环将数组中前两位数值的和赋值给第三位,依次赋值10次。
}
console.log(arr);                  //打印数组
console.log(arr[arr.length-1]);    //打印数组最后一个值 为结果。

封装一个(函数)

function getTuzi(n) {
    var num1 = 1;
    var num2 = 1;
    var temp;
    for (var i=3;i<=n;i++){
        temp = num2;
        num2 = num1 + num2;
        num1 = temp;
    }
    return num2;
}
document.write(getTuzi(12));

感谢观看,希望对您有帮助!

历史上的今天
4月
12
weinxin
我的微信
爱生活、爱学习的小伙伴可以通过扫一扫二维码添加我的个人微信一起交流!
未分类
青青子衿
  • 本文由 发表于 2015年4月12日18:25:45
  • 转载请务必保留本文链接:http://ishangsf.com/archives/177
国内离线安装 Chrome 扩展程序的方法总结

国内离线安装 Chrome 扩展程序的方法总结

前言 Chrome 作为最流行的网页浏览器之一,少不了其丰富强大的扩展们的加成,但国内无法访问 Chrome 扩展应用商店有点不方便。 好在 Chrome 支持离线安装扩展程序,我们只需要下载好离线安...
Verdaccio 搭建内网 npm 服务器

Verdaccio 搭建内网 npm 服务器

工作在一台不能连外网的电脑上,为了能够使用 npm install, 因此使用 verdaccio 搭建内网的npm 服务器 Verdaccio 官网: https://verdaccio.org/d...
gitbook常用的插件

gitbook常用的插件

1. 说明 本文主要讲解gitbook插件的使用。gitbook使用教程请参考我另一篇文章:https://segmentfault.com/a/11... Gitbook默认自带有5个插件: hig...
如何从官网下载 Google Chrome 离线安装包

如何从官网下载 Google Chrome 离线安装包

Google Chrome 已经是许多人的默认浏览器,但由于“你懂的”原因,在线安装基本没有成功过,他自己的自动更新也多数一直在加载中,所以我们会到一些下载站下载安装包,但我的多次经历告诉我,下载回来...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: