前端第一周,Javascript--天练习

        // 编写函数,传参 计算一个数字的阶乘返回

        // 假设输入 5    1*2*3*4*5

        // 返回值为 阶乘的结果

        // 正常使用函数 和 递归函数 两种方法 都实现一次
 

        var w = 1;

        for (var i = 1; i <= 5; i++) {

            w *= i;

        }

        console.log(w);//120



 

        // 求  1! + 2!+ 3! + 4! + 5! + 6! + ...... + 20! 的值

        // 编写函数,可以通过 传入参数 计算 1到任何值 每个数字的阶乘相加之和,参数为一个数字

        // 返回值为 计算的结果

        // 例如传入参数  5

        // 1*1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5

        function fn1(num) {

            // 接收每个数字阶乘结果相加之和的变量

            var sum = 0;

            // 外层循环,控制计算几的阶乘

            for (var k = 1; k <= num; k++) {

                // 接收当前循环数字的结果的变量

                var n = 1;

                // 内层循环,控制实现外层循环变量数值的 阶乘结果

                for (var i = 1; i <= k; i++) {

                    n *= i;

                }

                // 将当前循环数字的阶乘结果加给sum保存

                sum += n;

            }

            // 返回结果

            return sum;

        }

        var n1 = fn1(20);

        console.log(n1);  // 2561327494111820300

        var n2 = fn1(10);

        console.log(n2);  // 4037913

        var n3 = fn1(3);

        console.log(n3);  // 9


 

        function fn2(num) {

            // 接收每个数字阶乘结果相加之和的变量

            var sum = 0;

            // 接收每个数字阶乘结构的变量

            var n = 1;

            // 外层循环,控制计算几的阶乘

            for (var k = 1; k <= num; k++) {

                n *= k;

                sum += n;

            }

            // 返回结果

            return sum;

        }

        var n4 = fn2(20);

        console.log(n4);  // 2561327494111820300

        var n5 = fn2(10);

        console.log(n5);  // 4037913

        var n6 = fn2(3);

        console.log(n6);  // 9



 

        // 通过 普通函数 和 递归函数 分别 实现  

        // 求斐波那契数列的第几项

        // 斐波那契额数列:1  1  2  3  5  8  13  21  34  55 ......

        // 函数封装,可以通过 传入参数 求到任意项的值

        // 假如 传入 6   得到结果  第六项的值

        // 如果通过递归完成肯定用到这个公式  F(n)=F(n-1)+F(n-2)

        function fbnqDg(n) {

            if (n == 1 || n == 2) {

                return 1;

            }

            return fbnqDg(n - 1) + fbnqDg(n - 2);

        }

        var f1 = fbnqDg(5);

        //   fbnqDg(4)                         + fbnqDg(3);

        //   fbnqDg(3)             + fbnqDg(2) + fbnqDg(2) + fbnqDg(1);

        //   fbnqDg(2) + fbnqDg(1) + 1         + 1         + 1

        //   1         + 1         + 1         + 1         + 1

        console.log(f1);  // 5

        var f2 = fbnqDg(10);

        console.log(f2);  // 55


 

        function fbnq(n) {

            if (n == 1 || n == 2) {

                return 1;

            }

            // 声明两个变量,初始的值为 第一项的值 和 第二项的值,都是 1

            var a = 1;

            var b = 1;

            for (var i = 3; i <= n; i++) {

                // 循环几就计算出第几项的值

                var c = a + b;

                // 将上一计算的第二项给到 a变量

                a = b;

                // 将上一次计算结果给到 b变量

                b = c;

            }

            // 返回结果

            return c;

        }

        var f3 = fbnq(5);

        console.log(f3);  // 5

        var f4 = fbnq(8);

        console.log(f4);  // 21



 

        // 使用 * 在页面输出倒直角三角形

        // *******

        // ******            

        // *****          

        // ****          

        // ***        

        // **        

        // *

        function san1(n) {

            for (var i = 1; i <= n; i++) {

                // for(var j=n;j>=i;j--){

                //     document.write('*');

                // }

                for (var j = i; j <= n; j++) {

                    document.write('*');

                }

                document.write('<br>');

            }

        }

        san1(6);

        san1(10);



 

        // 使用 * 在页面输出等腰三角形

        //      *

        //     ***

        //    *****

        //   *******

        //  *********

        // ***********

        function san2(n) {

            for (var i = 1; i <= n; i++) {

                for (var j = i; j <= n - 1; j++) {

                    document.write('&ensp;');

                }


 

                for (var j = 1; j <= 2 * i - 1; j++) {

                    document.write('*');

                }

                document.write('<br>');

            }

        }

        san2(6);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值