函数练习

2021-10-19  本文已影响0人  心存美好

练习一

求1! + 2! + 3! + 4! + …… + 10!的和
叹号表示阶乘,如4! = 1 * 2 * 3 * 4

function jiecheng(num){    //阶乘函数
    // if(num<=1){
    //     return 1;
    // }else{
    //     return num*jiecheng(num-1);
    // }
    return num<=1 ? 1 : num*jiecheng(num-1); 
}

var result=0;
for(i=0;i<=10;i++){
    result += jiecheng(i);
}
console.log("1-10数字阶乘和为" + result);

练习二

求一个三位数,该三位数等与其每位数字的阶乘之和。

function jiecheng(num){   
    return num<=1 ? 1 : num*jiecheng(num-1); 
}
for(i=100;i<=1000;i++){
    var result = 0;
    num = i;
    while(num){
        result += jiecheng(num%10);
        num = parseInt(num /10);
    }
    if(result==i){
        console.log("三位数等与其每位数字的阶乘之和的数是" + i);
    }
}

练习三

编写一个函数rev用于将一个整数前后倒置。
例如rev(12345)将返回54321,rev(123)将返回321
整数位数不限制,多少位都行。

方法一借用字符串
function rev(num){
    var str=""+num;
    var length=str.length;
    var result="";
    for(var i=0;i<length;i++){
        result += num%10;
        num = parseInt(num/10);
    }
    return +result
}
console.log(rev(12345));
方法二也是借助字符串
    var result="";
    while(num){
        result += num%10;
        num = parseInt(num/10);
    }
    return +result
}
console.log(rev(12345));
方法三不借助字符串
function rev(num){
    var result=0;
    while(num){
        result =result*10+num%10;
        num = parseInt(num/10);
    }
    return result
}
console.log(rev(12345));

练习四

如果整数A 的全部约数(包括1,不包括A 本身)之和等于B,且整数B 的全部约数 (包括1,不包括B 本身)之和等于A,则称整数A和B是一对亲密数。
求3000 以内的全部亲密数。

function yueshuhe(num){// 封装一个不包含自己的约束和的方法
    sum=0;
    for(var i=1;i<num;i++){
        if(num%i==0){
            sum += i;
        }
    }
    return sum;
}
for(var A=1;A<=3000;A++){
    for(var B=1;B<=3000;B++){
        if(A==yueshuhe(B) && yueshuhe(A)==B && A != B){
         console.log(A,B,"是亲密数");

        }
    }
}
优化 就让B等于yueshuhe(A)
function yueshuhe(num){// 封装一个不包含自己的约束和的方法
    sum=0;
    for(var i=1;i<num;i++){
        if(num%i==0){
            sum += i;
        }
    }
    return sum;
}
for(var A=1;A<=3000;A++){
    B=yueshuhe(A) 
    if(A==yueshuhe(B) && yueshuhe(A)==B && A != B){
    console.log(A,B,"是亲密数");
    }
}

练习五

定义一组函数,输入数字,逆转并输出汉字形式

function numToChinese(num){
    switch(num){
        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 "玖";
        case 10:
            return "拾";
    }
}
function rev(num){
    var result='';
    while(num){
        result += numToChinese(num%10);   //调用映射函数
        num = parseInt(num/10);
    }
    return result
}
console.log(rev(66443322));
上一篇下一篇

猜你喜欢

热点阅读