JavaScript函数练习

练习1:定义函数,计算阶乘和:1! + 2! + 3! + 4! + 5!

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

n!=1×2×3×...×(n-1)×n

阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n

			// 方法一
			function getSum() {
            let sum = 0;
            let n = 1;
            for (let i = 1; i <= 5; i++) {
                n *= i;
                sum += n;
            }
            return sum;
        }
        let t = getSum();
        console.log(t);

		// 方法二
        function getSum1() {
            let sum = 0;
            for (let i = 1; i <= 5; i++) {
                let n = 1;
                for (let j = 1; j <= i; j++) {
                    n *=j;
                }
                sum += n;
            }
            return sum;
        }
        let t = getSum1();
        console.log('1! + 2! + 3! + 4! + 5! = ',t);

练习2:定义一个函数,返回所有的水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

        function getNum() {
            let arr = []; //保存水仙花数的数组
            for (let i = 100; i <= 999; i++) {
                // 1.拆分三位数
                let bai = parseInt(i / 100);
                let shi = parseInt(i / 10) % 10;
                let ge = i % 10;
                // 2.求各位数字的立方和
                if (i == bai ** 3 + shi ** 3 + ge ** 3) {
                    arr.push(i)
                }
            }
            return arr;
        }
        let t = getNum();
        console.log(t);

练习3:定义一个函数,计算n!(n的值由外部传入)

			function getSum(n) { //n是形参,是定义函数时,放在函数名后的"()"中
            let t = 1;
            for (let i = 1; i <= n; i++) {
                t *= i;
            }
            return t;
        }

		let k = 8;
        let m = getSum(k); 
        console.log(m);

练习4:定义一个函数,用于输出一个二维数组

        function showArray(arr) { //arr是形参
            let str = '';
            for (let i = 0; i < arr.length; i++) {  // 外循环:循环变量i是行下标
                for (let j = 0; j < arr[i].length; j++) {  //内循环:循环变量是列下标
                    str +=arr[i][j] + '\t';
                }
                str += '\n';
            }
            console.log(str);
        }

        let a1 = [[1,2,3],[4,5,6],[7,8,9]];
        showArray(a1);  //a1是实参

        let a2 = new Array(new Array(11,22,33,44),new Array(44,55,66,77));
        showArray(a2); //a2是实参

练习5:定义一个函数,用来判断是否为素数

        function isPrime(n) {
            // let flag = true //假设n是素数
            for (let i = 2; i < n; i++) {
                if (n % i == 0) {
                    // flag = false;
                    // break;
                    return false;
                }
            }
            return true;
        }
        // let k = 15;
        // console.log(isPrime(k));
        // 输出100以内的所有素数
        let str = '';
        for (let k = 2; k <= 100; k++) {
           if (isPrime(k)) {
                str +=k +'\t';
           }
        }
        console.log(str);

课堂作业1:定义一个函数,返回1000以内的完数

完数:某个数的所有因子(不包含自身)之和等于他本身

        function getPerfectNum(n) {  //判断n是否是完数
            let sum = 0;  //sum用于累加因子
            for (let i = 1; i < n; i++) {
                if (n % i == 0) {  //条件为真,表示i是n的因子
                    sum +=i;
                }
            }
            if (sum ===n) { //sum存放n的所有因子之和
                    return true;
                } else{
                    return false;
                }
        }

        // let k = 20;
        // console.log(getPerfectNum(k));

        // 输出1000以内的所有完数
        for (let j = 1; j <= 1000; j++) {
            if (getPerfectNum(j)) {
                console.log(j);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值