用JS实现阶乘 ( n! = 1 x 2 x 3 x ······ x (n-1) x n )

本节只讲述如何用JS实现阶乘以及阶乘的和

一,阶乘的规定

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。



大于等于1
任何大于等于1 的自然数n 阶乘表示方法 >>>
在这里插入图片描述
或者这样 >>>
在这里插入图片描述
0的阶乘 >>>
0!=1。

二,阶乘函数

用JS定义 >>>

  // 阶乘函数定义
            function factorial(num) {
                if (num === 1) {
                    return 1;
                } else {
                    return num * factorial(num - 1)
                }
            }

使用 >>>

计算3的阶乘
在这里插入图片描述

上面的写法有点不安全,少了一个判断 0 的阶乘的过程,这里补上 >>>

  // 阶乘函数定义
            function factorial(num) {
                if (num === 1) {
                    return 1;
                } else if(num === 0){ //添加了这个判断输入为0时做阶乘的过程
					return 1;
				}else {
                    return num * factorial(num - 1)
                }
            }

这个就是用JS实现阶乘的办法


阶乘算法演示 >>>

现在我们来做一道题,求1到n的阶乘的和,在网页上输出1!+2!+…+n!的和
在这里插入图片描述

阶乘算法全部代码

    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>在网页上输出1!+2!+......+n!的和</title>
    </head>

    <body>
        <script>
            // 阶乘函数定义
            function factorial(num) {
                if (num === 1) {
                    return 1;
                } else if (num === 0) {
                    return 1;
                } else {
                    return num * factorial(num - 1)
                }
            }

            //计算从 1 开始到 n 的阶乘的累加和
            function addRes(n) {
                var res1 = 0;
                for (var i = 1; i <= n; i++) {
                    res1 += factorial(i);
                }
                return res1;
            }

            //封装为一个主函数
            function main(n) {
                // 当n为1直接输出结果为1,避免打印出1!+2!+...+1!=1的书写bug , if else的条件同理
                if (n === 1) {
                    document.write("<h1 style='text-align:center;'>" + "<font color='red'>阶乘的结果为:</font>1!=1" +
                        "</h1>");
                } else if (n === 2) {
                    document.write("<h1 style='text-align:center;'>" + "<font color='red'>阶乘的结果为:</font>1!+2!=4" +
                        "</h1>");
                } else {
                    //返回最终累加和结果
                    var res2 = addRes(n);
                    //字符串拼接,为输出到页面上做准备
                    var str = "<font color='red'>阶乘的结果为:</font>1!+2!+......+";
                    str += n + "! =" + res2;
                    document.write("<h1 style='text-align:center;'>" + str + "</h1><hr/>");
                }
            }

            //显示提示用户进行输入n的对话框
            var n = parseInt(prompt("请输入求的阶乘的数是多少(输入的数必须为大于0的整数):"));
            //执行主函数计算 输出答案 (求1到n的阶乘的和)
            main(n);
        </script>
    </body>

    </html>
发布了51 篇原创文章 · 获赞 115 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41136216/article/details/105768357