详解JavaScript中分解数字的三种方法
网络编程 2021-07-04 14:07www.168986.cn编程入门
这篇文章主要介绍了在JavaScript中分解数字的三种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本文基于免费代码营基本算法脚本“分解数字”
在数学中,非负整数n的阶乘可能是一个棘手的算法。在本文中,我将解释这种方法,使用递归函数,第二种使用而循环,第三种使用以循环。
算法挑战
返回提供的整体的阶乘。
如果整体用字母n表示,则阶乘是所有小于或等于n的正整数的乘积。
阶乘经常用简写符号n!表示!
例如5!= 1 2 3 4 5 = 120
function factorialize(num) { return num; } factorialize(5);
提供的测试用例
- factorialize(0)应该返回1
- factorialize(5)应该返回120
- factorialize(10)应该返回3628800
- factorialize(20)应该返回2432902008176640000
什么是因数分解?
当将一个因数分解时,就是称为数字乘以每个连续的数字减一个。
如果您的电话号码是5,则您将
5! = 5 4 3 2 1
该模式为
0! = 1
1! = 1
2! = 2 1
3! = 3 2 1
4! = 4 3 2 1
5! = 5 4 3 2 1
1.递归分解一个数字
function factorialize(num) { // If the number is less than 0, reject it. if (num < 0) return -1; // If the number is 0, its factorial is 1. else if (num == 0) return 1; // Otherwise, call the recursive procedure again else { return (num factorialize(num - 1)); / First Part of the recursion method You need to remember that you won't have just one call, you'll have several nested calls Each call: num === "?" num factorialize(num - 1) 1st call – factorialize(5) will return 5 factorialize(5 - 1) // factorialize(4) 2nd call – factorialize(4) will return 4 factorialize(4 - 1) // factorialize(3) 3rd call – factorialize(3) will return 3 factorialize(3 - 1) // factorialize(2) 4th call – factorialize(2) will return 2 factorialize(2 - 1) // factorialize(1) 5th call – factorialize(1) will return 1 factorialize(1 - 1) // factorialize(0) Second part of the recursion method The method hits the if condition, it returns 1 which num will multiply itself with The function will exit with the total value 5th call will return (5 (5 - 1)) // num = 5 4 4th call will return (20 (4 - 1)) // num = 20 3 3rd call will return (60 (3 - 1)) // num = 60 2 2nd call will return (120 (2 - 1)) // num = 120 1 1st call will return (120) // num = 120 If we sum up all the calls in one line, we have (5 (5 - 1) (4 - 1) (3 - 1) (2 - 1)) = 5 4 3 2 1 = 120 / } } factorialize(5);
没有注释
function factorialize(num) { if (num < 0) return -1; else if (num == 0) return 1; else { return (num factorialize(num - 1)); } } factorialize(5);
2.用WHILE循环分解一个数字
function factorialize(num) { // Step 1. Create a variable result to store num var result = num; // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // Step 2. Create the WHILE loop while (num > 1) { num--; // decrementation by 1 at each iteration result = result num; // or result = num; / num num-- var result result = num 1st iteration: 5 4 5 20 = 5 4 2nd iteration: 4 3 20 60 = 20 3 3rd iteration: 3 2 60 120 = 60 2 4th iteration: 2 1 120 120 = 120 1 5th iteration: 1 0 120 End of the WHILE loop / } // Step 3. Return the factorial of the provided integer return result; // 120 } factorialize(5);
没有注释
function factorialize(num) { var result = num; if (num === 0 || num === 1) return 1; while (num > 1) { num--; result = num; } return result; } factorialize(5);
3.使用FOR循环分解数字
function factorialize(num) { // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // We start the FOR loop with i = 4 // We decrement i after each iteration for (var i = num - 1; i >= 1; i--) { // We store the value of num at each iteration num = num i; // or num = i; / num var i = num - 1 num = i i-- i >= 1? 1st iteration: 5 4 = 5 - 1 20 = 5 4 3 yes 2nd iteration: 20 3 = 4 - 1 60 = 20 3 2 yes 3rd iteration: 60 2 = 3 - 1 120 = 60 2 1 yes 4th iteration: 120 1 = 2 - 1 120 = 120 1 0 no 5th iteration: 120 0 120 End of the FOR loop / } return num; //120 } factorialize(5);
没有注释
function factorialize(num) { if (num === 0 || num === 1) return 1; for (var i = num - 1; i >= 1; i--) { num = i; } return num; } factorialize(5);
到此这篇关于详解JavaScript中分解数字的三种方法的文章就介绍到这了,更多相关js分解数字内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程