JavaScript函数练习题2

1、写个函数计算所有传入参数相乘的结果(参数数量不定)    //arguments

        function fn() {

            var result = 1

            //遍历arguments 进行

            for (var i = 0; i < arguments.length; i++) {

                result *= arguments[i]

            }

            return result

        }

        console.log(fn(1, 2, 3));

2、写个函数实现加减乘除运算(两个操作数, 一个操作符)

方案1

        var num1 = prompt('请输入第一个数字');

        var str = prompt('请输入一个加减乘除的符号');

        var num2 = prompt('请输入第二个数字');

        function getNum(num1, num2) {

            return [parseInt(num1) + parseInt(num2), num1 - num2, num1 * num2, num1 / num2];

        }

        var st = getNum(num1, num2);

        if (str == '+') {

            alert('第一个数字加上第二个数字等于:' + st[0])

        } else if (str == '-') {

            alert('第一个数字减去第二个数字等于:' + st[1])

        } else if (str == '*') {

            alert('第一个数字乘以第二个数字等于:' + st[2])

        } else if (str == '/') {

            alert('第一个数字除以第二个数字等于:' + st[3])

        }

        getNum(num1, num2);

方案2

        function fn1(number1, number2, s) {

            var result = 0

            switch (s) {

                case "+":

                    result = number1 + number2

                    break

                case "-":

                    result = number1 - number2

                    break

                case "*":

                    result = number1 * number2

                    break

                case "/":

                    result = number1 / number2

                    break

                default:

                    console.log('参数错误');

            }

            return result

        }

        console.log(fn1(38, 50, '+'));

3、写个函数实现n的阶乘    //递归

        // n != n * (n - 1);

        function mul(n) {

            // n的阶乘

            // var num = 1;

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

            //     num *= i;

            // }

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

                return 1;

            }

            return n * mul(n - 1);

        }

        console.log(mul(5));

4、找出0 - 100 之间7的倍数, 和包含7的数字    //函数套循环和判断

        function fn3() {

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

                if (i % 7 == 0 || i % 10 == 7 || parseInt(i / 10) == 7) {

                    console.log(i)

                }

            }

        }

        fn3()

5、不用循环, 计算0 - 100 以内的数字和    //递归

        function num(n) {

            if (n == 0) {

                return 0;

            } else {

                return n - 1 + num(n - 1);

            }

        }

        console.log(num(101));

        function num2(n) {

            if (n == 1) {

                return 1;

            } else {

                return n + num2(n - 1);

            }

        }

        console.log(num2(100));

6、制作一个简易计算器( 计算两个数的加减乘除, 带可手动输入数字和运算符)

HTML内容

    <select name="" id="s">

        <option value="+">+</option>

        <option value="-">-</option>

        <option value="*">*</option>

        <option value="/">/</option>

    </select>

    <input type="text" id="number2">

    =

    <input type="text" id="result">

    <button id="btn">计算</button>

JS内容

        function computer() {

            //获取俩个输入框的值

            var number1 = document.getElementById('number1').value //string

            var number2 = document.getElementById('number2').value //string

            //获取下拉列表的值

            var s = document.getElementById('s').value

            //设置结果

            document.getElementById('result').value = fn1(Number(number1), Number(number2), s)

        }

        //点击对应的按钮才进行操作

        document.getElementById('btn').onclick = computer

7、兔子繁殖问题, 设有一只新生兔子, 从第四个月开始他们每个月, 月初都生一只兔子, 新生的兔子从第四个月月初开始又每个月生一只兔子按此规律, 并假定兔子没有死亡, n(n <= 20) 个月月末共有多少只兔子?    //斐波拉契数列

        function k(n) {

            if (n <= 3) {

                return 1;

            } else {

                return k(n - 3) + k(n - 1);

            }

        }

        console.log(k(20));

posted @ 2022-07-29 09:08  富贵花开888  阅读(178)  评论(0)    收藏  举报