2020-09-14 函数案例题

函数作业:

         //第一题:求1! + 2! + 3! + 4! + …… + 10!的和

        // function fn(n){

        //     var sum = 0;

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

        //         var num = 1;

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

        //             num = num * j;

        //         }

        //         sum = sum + num;

        //         console.log("阶乘值:" + num)

        //     }

        //     console.log("所有阶乘之和:" + sum)

        // }

        // fn(10)

方法一:循环
方法二:递归

         //第二题:求一个三位数,该三位数等与其每位数字的阶乘之和。

        //先用函数fn1封装阶乘的运算,在调用fn2进行条件循环判断求解满足表达式的值。

        //函数整体可以作为另外一个函数的参数.

        // function fn1(i){

        //     var val = 1;

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

        //         val *= num;

        //     }

        //     return val;

        // }


        // function fn2(){

        //     for(var n = 100; n < 1000; n++){

        //         var x = parseInt(n / 100);

        //         var y = parseInt(n / 10) % 10;

        //         var z = n % 10

        //         if(n == fn1(x) + fn1(y) + fn1(z)){

        //             console.log(`满足条件的三位数有:${n} = ${x}! + ${y}! + ${z}!`)

        //         }

        //     }

        // }

        // fn2()

方法一    

        //第三题:编写一个函数rev用于将一个整数前后倒置。

        //例如rev(12345)将返回54321,rev(123)将返回321整数位数不限制,多少位都行。

        //方法一:

        //先用函数weis封装求解有多少位数的运算,在调用rev求解实参的倒置结果。

        // function weis(n){

        //     for(var i = 1; true; i++){

        //         var num = parseInt(n / Math.pow(10,i));

        //         if(num < 1){

        //             return i;

        //         }

        //     }

        // }

        // function rev(m){

        //     var s = weis(m);

        //     var val = 0;

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

        //         val += parseInt(m / Math.pow(10,i-1)) % 10 * (Math.pow(10,s-i));

        //     }

        //     console.log(`${m}倒置后的数为:${val}`);

        // }

        // rev(12)

        // rev(123)

        // rev(12345)

        // rev(10305)

        // rev(456789321)

方法一

        //方法二:

        // function rev(n){

        //     var str = String(n) //转换为字符串类型

        //     var arr = str.split("") //字符串切割为数组

        //     var newArr = arr.reverse() //倒置数组数据 

        //     var num = newArr.join("") //通过join的参数作为衔接符。将数组的每条数据拼接成字符串

        //     console.log(`${n}倒置后为:${+num}`)

        // }

        // rev(12)

        // rev(123)

        // rev(10305)

        // rev(234689)

        // rev(456789321)

方法二

        //方法三:

        // function rev(n){

        //     var num = String(n);

        //     var res = '';

        //     for(var i = num.length - 1; i >= 0; i--){

        //         res += num[i];

        //     }

        //     console.log(`${num}倒置后为:${res}`);

        //     return res;

        // }

        // rev(12)

        // rev(123)

        // rev(10305)

        // rev(234689)

        // rev(456789321)

方法三

        //第四题:如果整数A的全部约数(包括1,不包括A本身)之和等于B,且整数B的全部约数(包括1,不包括B本身)之和等于A,

        //则称整数A和B是一对亲密数。求3000 以内的全部亲密数。

        //先用函数sum封装求解约数满足条件内和的运算,在进行条件循环判断求解满足表达式的亲密数对。

        //函数整体可以作为另外一个函数的参数。

        //3000以内的亲密数对有: //220  284

                                                  //1184  1210

                                                 //2620  2924

        //因:A = sum(B),B = sum(A)

        //则:A = sum(sum(A)),B = sum(sum(B))

        // function sum(n){

        //     var sum = 0;

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

        //         if(n % i == 0){

        //             sum += i;

        //         }

        //     }

        //     return sum;

        // }

        // for(var k = 1; k < 3000; k++){

        //     if(sum(sum(k)) == k && k != sum(k)){

        //         console.log(sum(k),k);

        //     }

        // }

        //第五题:写一个函数实现加法计算机。

        //可以通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。

        // function add(){

        //     var res = 0;

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

        //         res += arguments[i];

        //     }

        //     console.log(res);

        // }

        // add(1,2)

        // add(1,2,3)

        // add(2,3,4.5,6.5)

        //第六题:定义一组函数,输入数字,逆转并输出汉字形式。

        // function changeover(n){

        //     switch(n){

        //         case "0":

        //         return "零";

        //         case "1":

        //         return "壹";

        //         case "2":

        //         return "贰";

        //         case "3":

        //         return "叁";

        //         case "4":

        //         return "肆";

        //         case "5":

        //         return "伍";

        //         case "6":

        //         return "陆";

        //         case "7":

        //         return "柒";

        //         case "8":

        //         return "捌";

        //         case "9":

        //         return "玖";

        //     }

        // }

        // function rev(){

        //     var num = prompt("请输入你的值:");

        //     var str = "";

        //     for (var i = num.length-1;i >= 0; i--) {

        //         str  += changeover(num[i]);

        //     }

        //     alert(str);

        // }

        // rev()

(1)
(2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容