汤姆大叔的博客里看到了6个基础题目:本篇是第4题 - 利用JavaScript打印出Fibonacci数(不使用全局变量)

解题关键:

1、Fibonacci数列的规律

2、递归

解点1:Fibonacci数列的规律

1,1,2,3,5,6,13,19,32....  //从第3项开始,每项都是前两项之和

解点2:递归

递归是一个复杂的概念,此题可以不用递归解决,但题目要求不能使用全局变量,所以我只能想到递归方法。简单的说,递归就是函数调用函数本身,但递归一定要有一个出口,否则就无限调用下去……下面对Fibonacci数列进行一下罗列并找规律:

第1项,1
第2项,第1项 + 第0项
第3项,第2项 + 第1项
.....
依此类推,那么可得 Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2) 那么它的出口处就在1这里,即求的项数小于2时,直接返回1,而不再调用自己(一旦不调用自己了,也就意味着递归结束)

以下是该题的实现代码:

function Fibonacci(n) { //显示Fibonacci的前n项
function Fibo(i) { //求Fibonacci的第i项
return i<2 ? i : Fibo(i-1) + Fibo(i-2); //此处定义了递归的规则
}
for(var i=1; i<=n; i++) {
console.log( Fibo(i) );
}
}
Fibonacci(5); //1,1,2,3,5

此题解答完毕!

利用JavaScript打印出Fibonacci数(不使用全局变量)的更多相关文章

  1. 每日一小练——高速Fibonacci数算法

    上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  2. 一个小的日常实践——高速Fibonacci数算法

    上得厅堂.下得厨房.写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  3. ACM Fibonacci数 计算

    Fibonacci数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递 ...

  4. (Demo分享)利用JavaScript(JS)做一个可输入分钟的倒计时钟功能

    利用JavaScript(JS)实现一个可输入分钟的倒计时钟功能本文章为 Tz张无忌 原创文章,转载请注明来源,谢谢合作! 网络各种利用JavaScript做倒计时的Demo对新手很不友好,这里我亲手 ...

  5. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  6. Fibonacci数Python的四种解法

    1: # 计算Fibonacci数: # Naive版本,时间效率O(1.618^n) # 记忆化版本(增加line8.10.13),时间效率O(n) # 注意:当n超过1000,可能超过系统允许的最 ...

  7. 利用 JavaScript SDK 部署网页版“Facebook 登录”

    facebook开发者平台https://developers.facebook.com/ 利用 JavaScript SDK 部署网页版“Facebook 登录” 通过采用 Javascript 版 ...

  8. python-使用函数输出指定范围内Fibonacci数的个数

    本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目. 所谓Fibonacci数列 ...

  9. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

随机推荐

  1. quick sort去除无用判断

    #include <stdio.h> #include <stdlib.h> //int a[]={1000,10000,9,10,30,20,50,23,90,100,10} ...

  2. Lua3

    Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础.如数组.记录.线性表.队列和集合等,在Lua中都可以通过table来表示. 1.数组 使用整数来索引table即可在Lua中实 ...

  3. Python全栈工程师 (类变量、方法、继承、覆盖)

    ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 补充: 实例方法都是操作实例对象 ...

  4. 1086 Tree Traversals Again (25 分)(二叉树的遍历)

    用栈来模拟一棵二叉树的先序遍历和中序遍历过程,求这棵二叉树的后序遍历 由题棵知道:push是先序遍历 pop是中序遍历 #include<bits/stdc++.h> using name ...

  5. poj 1035 纯正的字符串水

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22673   Accepted: 8258 De ...

  6. J2EE的十三个技术——Servlet

    简介: 基于协议的请求/响应服务的Java类.通俗的说,Servlet是在服务器上运行的小程序.为什么叫Servlet?Applet表示小应用程序,Server+Applet即为Servlet,表示小 ...

  7. ubuntu16.04 搭建nexus+maven 学习

    /opt/nexus-2.10.0-02/bin vim nexus 关键配置: RUN_AS_USER=root JAVA_HOME=/usr/lib/java/jre export NEXUS_H ...

  8. sql server获取后天距离某一日期还有多少周的写法

    ),,),'2012-10-18 00:00:00.000')

  9. 点对点协议(Point-to-Point Protocol)

    简介 点对点协议简称PPP协议,工作在数据链路层.设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机. 网桥和路由器之间简单连接的一种共通的解决方案. PPP协议的组成 建立 ...

  10. P1023 税收与补贴问题

    题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...