国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 詳解JavaScript中分解數字的三種方法

詳解JavaScript中分解數字的三種方法

2021-12-27 15:52Hunter網絡安全 js教程

這篇文章主要介紹了在JavaScript中分解數字的三種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文基于免費代碼營基本算法腳本“分解數字”

在數學中,非負整數n的階乘可能是一個棘手的算法。在本文中,我將解釋這種方法,首先使用遞歸函數,第二種使用而循環,第三種使用以循環。

算法挑戰

返回提供的整體的階乘。

如果整體用字母n表示,則階乘是所有小于或等于n的正整數的乘積。

階乘經常用簡寫符號n!表示!

例如:5!= 1 * 2 * 3 * 4 * 5 = 120

?
1
2
3
4
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.遞歸分解一個數字

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);

沒有注釋:

?
1
2
3
4
5
6
7
8
9
10
function factorialize(num) {
 if (num < 0)
  return -1;
 else if (num == 0)
  return 1;
 else {
  return (num * factorialize(num - 1));
 }
}
factorialize(5);

2.用WHILE循環分解一個數字

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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);

沒有注釋:

?
1
2
3
4
5
6
7
8
9
10
11
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循環分解數字

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);

沒有注釋:

?
1
2
3
4
5
6
7
8
9
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分解數字內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_25879801/article/details/111332992

延伸 · 閱讀

精彩推薦
  • js教程js事件模型與自定義事件實例解析

    js事件模型與自定義事件實例解析

    JavaScript一個最簡單的事件模型,需要有事件綁定與觸發,還有事件刪除。本文將對其具體實現代碼進行解析,需要的朋友一起來看下吧...

    caihg5612021-12-15
  • js教程js+html+css實現手動輪播和自動輪播

    js+html+css實現手動輪播和自動輪播

    這篇文章主要為大家詳細介紹了js+html+css實現手動輪播和自動輪播效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考...

    南柯Seven9192021-12-22
  • js教程繪制微信小程序驗證碼功能的實例代碼

    繪制微信小程序驗證碼功能的實例代碼

    這篇文章主要介紹了繪制微信小程序驗證碼功能的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參...

    WALL*E8652021-12-27
  • js教程微信小程序學習之自定義滾動彈窗

    微信小程序學習之自定義滾動彈窗

    這篇文章主要給大家介紹了關于微信小程序學習之自定義滾動彈窗的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考...

    юноша9042021-12-15
  • js教程前端開發之JS中編寫For循環的方法

    前端開發之JS中編寫For循環的方法

    這些年來,JavaScript 發展得如此之快。如果你之前有其他編程語言經驗的話,你可能無法相信在 JavaScript 中有4種方法可以編寫for 循環。...

    清閑的帆船先生8912021-12-24
  • js教程JavaScript中arguments的使用方法詳解

    JavaScript中arguments的使用方法詳解

    這篇文章主要給大家介紹了關于JavaScript中arguments的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    等待的L先生3602021-12-15
  • js教程ES6字符串的擴展實例

    ES6字符串的擴展實例

    這篇文章主要介紹了ES6字符串的擴展實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小...

    知否5502021-12-16
  • js教程微信小程序自定義膠囊樣式

    微信小程序自定義膠囊樣式

    這篇文章主要為大家詳細介紹了微信小程序自定義膠囊樣式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    四曦11322021-12-21
主站蜘蛛池模板: 精品伦精品一区二区三区视频 | 激情一区 | 激情综合欧美 | 国产激情偷乱视频一区二区三区 | 欧美成人免费视频 | 国产一区二区三区在线 | 国产欧美精品一区二区色综合 | 激情欧美一区二区三区中文字幕 | 国产免费一区二区三区 | 日韩三级电影免费观看 | 欧洲精品码一区二区三区免费看 | av在线精品| 高清一区二区在线观看 | 亚洲综合无码一区二区 | 国产一区二区久久 | 久久99精品久久久久久噜噜 | 在线中文字幕av | 亚洲毛片a | 日韩免费 | 亚洲自啪 | 亚洲日本乱码在线观看 | 在线久 | 国产欧美综合视频 | 欧美激情在线精品一区二区三区 | 日韩在线小视频 | 国产亚洲精品美女久久久久久久久久 | 久久综合成人精品亚洲另类欧美 | 亚洲伦理电影 | 亚洲久久 | 久久激情视频 | 日韩成人在线一区 | 天天色天天射天天操 | 久久亚洲国产 | 久在线| 国产精品久久99 | 国产精品成人国产乱一区 | 欧美a在线 | 亚洲免费国产视频 | 欧美久久精品 | 精品免费国产一区二区三区四区 | 国产999精品久久久久久麻豆 |