本文介绍在JavaScript中计算阶乘的两种常用方法:使用while循环和递归函数。通过具体代码示例,展示如何限制输入并计算结果,帮助开发者理解基础算法实现。
JavaScript实现阶乘:循环与递归代码示例
实现方法
可以使用while循环来实现,for循环同样适用。
另一种方式是采用递归算法。
代码内容
为简化页面输入限制,此处直接使用onkeyup事件处理。
循环实现代码:
//第一种方法 while循环
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>两种实现阶乘方法</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循环
// 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="计算">
</body>
</html>
以下通过具体代码展示JavaScript中阶乘函数的实现方式。
近期进行的一次练习:
// 第一, 向上加的阶层函数计算方法
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);
// 第二, 往下减的阶层函数
var del = function(n) {
if(n == 1) {
return 1
} else {
return n * del(n - 1);
}
}
var data= del(5);
alert(data);
总结
以上介绍了JavaScript利用递归和循环实现阶乘的实例,希望能提供有益参考。如有疑问欢迎留言,小编将及时回复。感谢对本站的支持!