JavaScript使用遞歸和循環(huán)實(shí)現(xiàn)階乘的實(shí)例代碼
【實(shí)現(xiàn)方法】
1.利用while循環(huán)來(lái)做,當(dāng)然for循環(huán)也可以。
2.遞歸
【代碼內(nèi)容】
偷懶,直接用onkeyup事件來(lái)限制來(lái)頁(yè)面的輸入
循環(huán)代碼:
//第一種方法 while循環(huán)
oCount.onclick = function (){
var oNum = document.getElementById('num').value;
oNum = Number(oNum);
if(oNum <= 1){
oBox.innerHTML = 1;
}
var oRes = 1;
while(oNum){
oRes *= oNum;
oNum--;
}
oBox.innerHTML = oRes;
}
遞歸代碼
// 第二種方法 遞歸
oCount.onclick = function(){
var oNum = document.getElementById('num').value;
oNum = Number(oNum);
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return (num * factorial(num-1));
}
};
oRes=factorial(oNum);
oBox.innerHTML = oRes;
};
完整代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>兩種實(shí)現(xiàn)階乘方法</title>
<style>
#box {
width: 100%;
height: 200px;
border: 1px solid #ccc;
text-align: center;
}
</style>
<script>
window.onload = function() {
var oBox = document.getElementById('box');
var oCount = document.getElementById('count');
// 第一種方法 while循環(huán)
// oCount.onclick = function (){
// var oNum = document.getElementById('num').value;
// oNum = Number(oNum);
// if(oNum <= 1){
// oBox.innerHTML = 1;
// }
// var oRes = 1;
// while(oNum){
// oRes *= oNum;
// oNum--;
// }
// oBox.innerHTML = oRes;
// }
// 第二種方法
oCount.onclick = function(){
var oNum = document.getElementById('num').value;
oNum = Number(oNum);
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return (num * factorial(num-1));
}
};
oRes=factorial(oNum);
oBox.innerHTML = oRes;
};
}
</script>
</head>
<body>
<div id="box"></div>
<input type="text" id="num" onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu = "value=value.replace(/[^0-9]/g,'')">
<input type="button" id="count" value="計(jì)算">
</body>
</html>
下面通過(guò)代碼看下javascript 中階乘函數(shù)方法
好久沒(méi)有弄了,練習(xí)下:
// 第一, 向上加的階層函數(shù)計(jì)算方法
var number = function(n) {
if(n == 1) {
return 1
} else {
product = 1;
for(i = 1; i <= n; i++) {
product *= i;
}
return product;
}
}
var d = number(5);
alert(d);
// 第二, 往下減的階層函數(shù)
var del = function(n) {
if(n == 1) {
return 1
} else {
return n * del(n - 1);
}
}
var data= del(5);
alert(data);
總結(jié)
以上所述是小編給大家介紹的JavaScript使用遞歸和循環(huán)實(shí)現(xiàn)階乘的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JavaScript采用遞歸算法計(jì)算階乘實(shí)例
- 從階乘函數(shù)對(duì)比Javascript和C#的異同
- JavaScript中常用的運(yùn)算符小結(jié)
- Js四則運(yùn)算函數(shù)代碼
- JS取模、取商及取整運(yùn)算方法示例
- JavaScript實(shí)現(xiàn)大數(shù)的運(yùn)算
- JS實(shí)現(xiàn)的加減乘除四則運(yùn)算計(jì)算器示例
- JavaScript中的數(shù)學(xué)運(yùn)算介紹
- 淺談JavaScript中運(yùn)算符的優(yōu)先級(jí)
- Javascript 浮點(diǎn)運(yùn)算精度問(wèn)題分析與解決
- JS實(shí)現(xiàn)求5的階乘示例
相關(guān)文章
使用JavaScript獲取Django模板指定鍵值數(shù)據(jù)
這篇文章主要介紹了使用JavaScript獲取Django模板指定鍵值數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
JS幾個(gè)常用的函數(shù)和對(duì)象定義與用法示例
這篇文章主要介紹了JS幾個(gè)常用的函數(shù)和對(duì)象定義與用法,涉及JavaScript日期時(shí)間、數(shù)值計(jì)算及變量判斷等相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
學(xué)習(xí)JavaScript設(shè)計(jì)模式之裝飾者模式
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的裝飾者模式,對(duì)JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下2016-01-01
JS實(shí)現(xiàn)數(shù)組深拷貝的方法分析
這篇文章主要介紹了JS實(shí)現(xiàn)數(shù)組深拷貝的方法,結(jié)合實(shí)例形式分析了javascript數(shù)組深拷貝的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
JavaScript具有類(lèi)似Lambda表達(dá)式編程能力的代碼(改進(jìn)版)
在之前的一篇博文中我介紹了一種方法可以讓JavaScript具有一種近似于Lambda表達(dá)式的編程能力——但是它有一些缺點(diǎn),其中妨礙它的使用的最主要的一條就是多了一層括號(hào),讓代碼變得難以閱讀。2010-09-09
關(guān)于uniapp的request封裝保姆級(jí)教程
這篇文章主要給大家介紹了關(guān)于uniapp的request封裝保姆級(jí)教程,request是基于uni-app框架封裝的一個(gè)網(wǎng)絡(luò)請(qǐng)求庫(kù),可以用于發(fā)送http請(qǐng)求和處理響應(yīng)數(shù)據(jù),需要的朋友可以參考下2023-07-07
基于javascript實(shí)現(xiàn)的購(gòu)物商城商品倒計(jì)時(shí)實(shí)例
本文主要介紹了基于javascript實(shí)現(xiàn)的購(gòu)物商城商品倒計(jì)時(shí)實(shí)例,代碼詳細(xì),可直接復(fù)制試試看效果。需要的朋友可以參考借鑒2016-12-12

