JavaScript——手写题

79 阅读2分钟

1. 求3的n次幂。

注:任何数的0次幂都是1。

var n = 5;     // 5次幂(3*3*3*3*3)
var mul = 1;   // 结果
for(var i = 0; i < n; i++){
    mul *= 3;
}
console.log(mul);  // 243

2. 求n的阶乘。

注:0的阶乘是1。

var n = 5;    //  5 * 4 * 3 * 2 * 1
var mul = 1;  // 结果
for (var i = n; i > 0; i--) {
    mul *= i;
}
console.log(mul);  // 120

3. a b c 三个数字,比较出最大的数字。

var a = 10,
    b = 20,
    c = 40;
if (a > b) {
    if (a > c) {    
        console.log("a");   // a > b && a > c
    } else {
        console.log("c");   // a > b && a < c
    }
} else {
    if (b > c) {
        console.log("b");   // a < b && b > c
    } else {
        console.log("c");   // a < b &&  c > b
    }
}

4.123反向输出为321。

let abc = 123;
var gw = abc % 10;  // 求个位数  123 % 10 = 3
var sw = (abc - gw) % 100;  // 求十位数  (123 - 3) % 100 = 20
var bw = (abc - abc % 100) / 100;  // 求百位数 (123 - 123 % 100) / 100 = 1
var sum = gw * 100 + sw + bw;   // 3 * 100 + 20 + 1 = 321
console.log(sum);   // 321

5. 求n位的斐波那契数。

注:除了第一位数和第二位数,其它位数的值是前两位相加的和

var n = 6;  // 求第6位的斐波那契数 1 1 2 3 5 8……
    fbNum = 0;  // 结果
if (n < 3) {    // 前两位都是 1
    fbNum = 1;
} else {
    var first = 1,      // 游标:前一位数
        second = 1;     // 游标:前两位数
    for (var i = 0; i < n - 2; i++) {   // 求第 n 位就是 n - 2 次循环,第一位和第二位不算
        fbNum = second + first; // 前一位数 + 前两位数 = 当前的斐波那契数
        second = first; // 游标后移, 前一位数变成了前两位数
        first = fbNum; // 游标后移, 当前数变成了前一位数
    }
}
console.log(fbNum); // 8

6.求100以内的质数。

注:1不是质数,只能被1和自身整除的数(整除说明:4除以2 表示4被2整除)

for (var i = 2; i < 100; i++) {     //外圈循环表示被除数
    var count = 0;      // 每个数被整除的次数
    for (var j = 1; j <= i; j++) {  // 里圈循环表示除数,被除数从 1 开始一直除到自身
        if (i % j == 0) {   // i 被 j 整除了,加 1
            count++;
        }
    }
    if (count == 2) {   // 所有数都能被 1 和自身整除,但只有只能被 1 和自身整除的数 count 才等于 2
        console.log(i);
    }
}