面试题之:js 实现阶乘

阶乘的公式是:  n! = 1 * 2 * 3 * 4 * ... * (n-2) * (n-1) * n

 

输入一个 n, 实现阶乘 。代码如下:

复制代码
// 公共 html 部分
<p>
    请输入:
    <input type="text" id="input" placeholder="请输入整数n" />
</p>
<button onclick="set()">button</button>
<div class="result">
    结果:<div id="result"></div>
</div>
复制代码

 

方法一:递归

复制代码
function set(){ // 入口函数
    let n = document.getElementById('input').value
    let res = this.math(n)  // 结果
   
    document.getElementById('result').innerText = res
}

function math(n){ // 递归函数
    if(n < 0){
        return -1
    }else if(n === 0 || n === 1){
        return 1
    }else{
        return n * this.math(n-1)
    }
}
复制代码

 

方法二: while()

复制代码
function set(){
    let n = document.getElementById('input').value
    let res = n  // n = n * (n-1) * (n-2) * ... * 2 * 1
   
    if(n < 0){
        res = -1
    }else if(n === 0 || n === 1){
        res = 1
    }else{
        while(n > 1){
            n--    // 递减
            res *= n
        }
    }

    document.getElementById('result').innerText = res
}
复制代码

 

方法三: for 循环

思路与 while  一样,采用 递减相乘的思路。

 

posted on   bala001  阅读(345)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示