JavaScript之递归

这篇具有很好参考价值的文章主要介绍了JavaScript之递归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


JavaScript之N的阶乘、递归、循环

1、递归

function recursionFactorial(n) {
	if (n == 1) return 1;
	
	return n * recursionFactorial(n - 1);
}

console.log(recursionFactorial(5));
// 120

2、循环

function factorial(params) {
    if (params < 1) return '请输入大于0的值。';
    if (!/^\d+$/.test(Number(params))) return '请输入纯数字!';
    
    let sum = 1,
        i = 1;
        
    for (; i <= params;)(sum *= i, i++);
    
    return sum;
}

console.log(factorial(7));
// 5040
console.log(factorial('7'));
// 5040
console.log(factorial(0));
// 请输入大于0的值。
console.log(factorial(-5));
// 请输入大于0的值。
console.log(factorial('柒'));
// 请输入纯数字!
console.log(factorial('a'));
// 请输入纯数字!
console.log(factorial('7柒a'));
// 请输入纯数字!

JavaScript之递归、斐波那契数列、兔子数列、黄金分割数列、解构、for、Number、alert、includes

递归基础

function fun(n) {
	// 退出条件
	if(n === 1) return 1;
	
	return n * fun(n - 1);
}

console.log(fun(3)); 
// 6

return 3 * fun(2);
return 3 * (2 * fun(1));
return 3 * (2 * 1);
6
最后的return需等待fn递归结束才执行
递归函数必须添加退出条件


纯递归实现斐波那契数列

function fibonacciSequenceRecursion(n) {
	n = Number(n);
	
	if (!n) return alert('请正确输入值');
	if (n == 1 || n == 2) return 1;
	
	return fibonacciSequenceRecursion(n - 2) + fibonacciSequenceRecursion(n - 1);
}

console.log(fibonacciSequenceRecursion(7)); 
// 13

递归+includes实现斐波那契数列

function fibonacci(n) {
	n = Number(n);
	// 退出条件
	if([1, 2].includes(n)) return 1;
	
	return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(6));
// 8

循环+解构实现斐波那契数列

function fibonacciSequenceFor(n) {
	n = Number(n);
	
	if (!n) return alert('请正确输入值');

	if (n <= 2) return 1;

	let a = 1,
		b = 1;

	for (let i = 2; i < n; i++) [a, b] = [b, a + b];

	return b;
}

console.log(fibonacciSequenceFor(8)); 
// 21

alert

MDN
window.alert()令浏览器显示一个带有可选的信息的对话框,并等待用户离开该对话框。
在某些情况下(例如,当用户切换标签时)浏览器可能不会实际显示一个对话框,或者不等待用户离开对话框。


w3school
如果要确保信息传递给用户,通常会使用警告框。
当警告框弹出时,用户将需要单击“确定”来继续。


Number

MDN
Number值表示像37-9.25这样的浮点数值。
Number构造函数包含常量和处理数值的方法。其他类型的值可以使用Number函数转换为数值。


w3school
Number函数将对象参数转换为表示对象值的数字。
如果该值无法转换为合法数字,则返回NaN
如果参数是Date对象,则Number函数返回自UTC 197011日午夜以来的毫秒数。


includes

MDN
includes方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true,否则返回false


w3school
includes方法确定数组是否包含指定的元素。
如果数组包含元素,则此方法返回true,否则返回false
includes方法区分大小写。


相关链接

1、来自CSDN的JavaScript写斐波那契数列的几种方式
2、来自博客园的JS写斐波那契数列的几种方法
文章来源地址https://www.toymoban.com/news/detail-851047.html

到了这里,关于JavaScript之递归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web前端javascript笔记——(13)事件(1)

    鼠标/键盘属性 altKey               返回当事件被触发时,“ALT”是否被按下。 button               返回当事件被触发时,哪个鼠标按钮被点击 clientX               返回当事件被触发时,鼠标指针的水平坐标。 clientY               返回当事件被触

    2024年01月25日
    浏览(50)
  • 2023年web前端开发之JavaScript进阶(一)

    接上篇博客进行学习,通俗易懂,详细 博客地址: 2023年web前端开发之JavaScript基础(五)基础完结_努力的小周同学的博客-CSDN博客 学习 作用域 、变量提升、 闭包 等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法, 降低代码的冗余度 。 理解作用域对程序

    2024年02月03日
    浏览(53)
  • web前端框架JS学习之JavaScript类型转换

    vascript有多种数据类型,如字符串、数字、布尔等,可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换,比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等,这在工作也是经常碰到的。 本期我们就给大家说说web前端框架JS学

    2024年02月10日
    浏览(58)
  • 19个Web前端交互式3D JavaScript框架和库

    JavaScript (JS) 是一种轻量级的解释(或即时编译)编程语言,是世界上最流行的编程语言。JavaScript 是一种基于原型的多范式、单线程的动态语言,支持面向对象、命令式和声明式(例如函数式编程)风格。JavaScript 几乎可以做任何事情,更可以在包括物联网在内的多个平台

    2024年02月22日
    浏览(43)
  • Web前端大作业制作个人网页(html+css+javascript)

    🧑个人网页设计、🙋‍♂️个人简历制作、👨‍💼简单静态HTML个人网页作品、👨‍🏭个人介绍网站模板 、等网站的设计与制作。 ⭐个人网页设计网站模板采用DIV CSS布局制作,网页作品有多个页面,如 :个人介绍(文字页面)、我的作品(图片列表)、个人技能(图文页

    2024年02月10日
    浏览(53)
  • [HTML]Web前端开发技术26(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 数据类型 数据类型-字符型 数据类型-数值型 数据类型-布尔型 数据类型-其它类型 变量 转义字符 运算

    2024年02月20日
    浏览(65)
  • 【JAVA WEB】JavaScript-条件语句

    目录 条件语句 if……else语句 三元表达式 switch 数组 创建数组 获取数组元素  新增数组元素 1.通过修改 length 新增 2.通过下标新增 3. 使用push进行追加元素 删除数组中的元素 调试 示例: script     let num=prompt(\\\"请输入数字:\\\")     if(num % 2 == 0)     {         alert(\\\"这个数字是偶

    2024年02月20日
    浏览(42)
  • JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能

    应用:tab 栏切换 H5自定义属性 自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。 自定义属性获取是通过getAttribute(‘属性’) 获取。 但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性。 H5给我们新

    2024年04月09日
    浏览(46)
  • web前端期末大作业:网站设计与实现——咖啡网站HTML+CSS+JavaScript

    🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作

    2024年02月08日
    浏览(50)
  • python_web1(前端开发之HTML、CSS、Bootstap、Javascript、JQuery)

    知识总结: Python_web前端开发 python 安装Flask web框架 pip install flask 简介:templates用来返回html的页面,而非文本。 创建文件index.html 结构如下 index.xml内容如下: web1.py内容如下: 重新运行后: 固定格式:h/div/span/a/img/ul/li/table/input/form 通用的字符编码 meta charset=“UTF-8” div:一个

    2024年04月14日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包