JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,
递归
所递归函数就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环。要避免进入死循环,写递归函数先要写一个结束条件(为了结束循环)递归函数一般比如阶乘问题。
下面的代码就是一个死递归的例子
function fn(){console.log(1)fn()}
当调用函数fn()是,执行fn里面的代码,没有结束的条件,就会一直调用自身,无止境的执行,就称之为死递归
下面来实现一个简单的的递归
要求:实现从 1 +2 + 3+…+100的和
function sum(n){if(n==1){ //n==1作为跳出循环的条件的依据是//当 n==1的时候,不用通过计算就可以得出结果return 1}else{return sum(n-1) + n //假设n==4的时候,函数需要计//算的过程为 sum(4) = 4+ sum(3); sum(3) = 3+sum(2);// sum(2) = 2 + sum(1) // 总结规律得出 sum(n) = n + sum(n-1)}}
调用函数sum(100) 输出结果为5050
下面来实现以下n +…100的和
只需要找出跳出循环的条件 n==100是 返回 100
```javascript
function sum(n){if(n==100){ //n==100作为跳出循环的条件的依据是//当 n==100的时候,不用通过计算就可以得出结果return 100}else{return sum(n+1) + n //假设n==97的时候,函数需要计//算的过程为 sum(97) = 97+ sum(98); //sum(98) =98+sum(99);// sum(99) =99+sum(100) // 总结规律得出 sum(n) = n + sum(n+1)}}
调用函数sum(100) 输出结果为100这个当然毫无质疑的
调用函数sum(97) 输出结果为394
下面就是通过一个函数实现1到100的阶乘```javascript
function fn(n){if(n==1){return 1}else{return fn(n-1) *n }}
下面就是通过一个函数实现n到100的阶乘
function fn(n){if(n==100){return 100}else{return fn(n+1) *n }}
如果要实现n到m的阶乘,只需要提换条件 n==m,就可以实现
计算Fibonacci sequence的第N项:
斐波那契数列(Fibonacci sequence),又称黄金分割数列、
因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,
斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3)
function fn(n){if(n==1||n==2){return 1}else{return fn(n-2) + fn(n-1)}}
总结:
1.先寻找临界值作为结束循环的条件,即无需通过计算就能获取到的值
2.寻找这一次和上一次的关系
3.假设当前的函数已经可以使用,调用自身计算一次
例如 :实现从 1 +2 + 3+…+100的和
sum(100) = sum(99) + 100 ; sum(n) = sum(n-1) + n
则得出 return sum(n-1) + n
JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,相关推荐
- js_使用递归函数求斐波那契数列的前20项并输出
输出前二十项斐波拉契数列 斐波拉契数列 斐波拉契数列 效果图 代码 <!DOCTYPE html> <html><head><meta charset=&qu ...
- 使用递归函数输出斐波那契数列
使用递归函数输出斐波那契数列(Fibonacci sequence),即1 1 2 3 5 8-. #include <stdio.h> #include <stdlib.h> ...
- 递归函数输出斐波那契数列-黄金分割数列-兔子数列(python)
递归函数输出斐波那契数列-黄金分割数列-兔子数列(python) 斐波那契数列介绍 数学家莱昂纳 多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔 ...
- 斐波那契(黄金分割)查找
11. 斐波那契(黄金分割法)查找算法 黄金分割点是指把一条线段分割成两部分,是其中一部分与全长之比等于另一部分与这部分之比.取其前三位数字的近似值是 0.618. 由此按此比例设计的造型十分美丽,因 ...
- python编写递归函数、求斐波那契数列第n项的值_用递归函数求斐波那契数列的第n项的值...
展开全部 #include int Fibonacci(int n) { if( n == 1 || n == 2) // 递归结束的条件,求前两项 return 1; else return Fib ...
- Python递归函数实现斐波那契数列
2022.4.6作业项目实训 题目:斐波那契数列 1 1 3 5 1.求某个位置上的数 2.输出某个位置上前面所有的数 分析:通过函数f(x)=f(x-1)+f(x-2)实现对斐波那契数 列每 ...
- python利用递归函数实现斐波那契数列_Python使用while循环输出斐波那契数列(Fibonacci)...
斐波那契数列又称费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数.斐波那契数列.费氏数列.黄金分割数列.在西方,首先研究这个数列的是比萨的列奥那多(意大利人 ...
- 每日C语言代码(The third day)——斐波那契(兔子数列)
今天来讲一个很常见的代码--斐波那契数列,虽然有很多人都发布了,但是我这次想要做一个比较深层次的分析! 编程求fibonacci数列:1,1,2,3,5,8--的前n个数. 首先我们先来解析一下这个数 ...
- C语言——利用递归函数完成斐波拉契前n项的计算
C语言,利用函数的方法完成斐波拉契前n项的计算 #include<stdio.h> int fun(int n) {if(n>2){return fun(n-1)+fun(n-2); ...
最新文章
- 关于学习Python的一点学习总结(9->字典创建及相关操作)
- html提交表单到Servlet
- Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au...
- SAP 主生产计划(MPS)
- Qt Remote Object(QtRO)给指定的客户端发送消息
- Go语言fmt.Printf使用指南(占位符总结)
- POJ 2826 An Easy Problem?! 叉积求多边形面积 【计算几何】
- Lunar New Year and Cross Counting
- 微型计算机最早出现在第三代计算机中,微型计算机最早出现在第三代计算机中。...
- 算数编码与哈夫曼编码的比较【转载】
- Matlab--Figure界面工具栏使用简要说明
- 【kafka】kafka LogSegmentOffsetOverflowException segment overflow Detected offset overflow
- MYSQL到ORACLE法式迁徙的注意变乱
- android fastboot驱动,fastboot驱动
- 服务器日志显示意外关闭,服务器多次异常关闭,错误日志:计算机已经从检测错误后重新启动。。检测错误: - Microsoft Community...
- [推荐]中国网管的知识宝库-网管之家
- 英特尔傲腾DC P4800X有哪些适用场景?
- 希沃白板如何解决手机端播放课件内视频出现黑屏闪退
- Unity 3D 游戏与编程
- 工业互联网构筑第四次工业革命的基石