周末练习题

周末练习题

// 5.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
    // 以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
    var peach = 1
    for(i=9;i>=1;i--){
        peach = (peach*2)+2
    }
    console.log(peach);
    // 6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
    var sum = 0;
    var x = 2;
    var y = 1;
    var temp = 0;
    for(i=0;i<=20;i++){
        sum+=x/y;
        temp = x;
        x=x+y;
        y=temp;
    }
    console.log(sum);
</script>
// 7.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
    // 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。
    // 请问第五个人多大? 
    // 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
    // 要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
    var year = 10;
    for (i = 4; i >= 1; i--) {
        year = year + 2;
    }
    console.log(year);
    // 8.打印杨辉三角
    // 1 
    // 1 1 
    // 1 2 1 
    // 1 3 3 1 
    // 1 4 6 4 1 
    // 1 5 10 10 5 1 
    // 1 6 15 20 15 6 1 
    // 1 7 21 35 35 21 7 1 
    // 1 8 28 56 70 56 28 8 1 
    // 1 9 36 84 126 126 84 36 9 1
    function yanghui(row) {
        // 创建一维数组
        var arr = new Array(row)
        // 创建二维数组
        for (var i = 0; i < arr.length; i++) {
            arr[i] = new Array(i + 1)
        }
        // 循环赋值
        for (var i = 0; i < arr.length; i++) {
            for (var j = 0; j < arr[i].length; j++) {
                if (j === 0 || i === j) {
                    arr[i][j] = 1
                } else {
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]
                }
            }
        }
        // 打印三角
        for (var i = 0; i < arr.length; i++) {
            for (var j = 0; j < arr[i].length; j++) {
                document.write(arr[i][j] + " ")
            }
            document.write("<br/>")
        }
    }
    yanghui(10)
    // 9.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
    var arr = [-1, -2, 1, 10, 4, 5, 8];
    var maxIndex = 0;
    var minIndex = arr.length - 1;
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] > arr[maxIndex]) {
            maxIndex = i
        } else if (arr[i] < arr[minIndex]) {
            minIndex = i;
        }
    }
    var max = arr[0];
    arr[0] = arr[maxIndex];
    arr[maxIndex] = max;
    var min = arr[arr.length - 1];
    arr[arr.length - 1] = arr[minIndex];
    arr[minIndex] = min;
    console.log(arr);

    // 10.找到数组 [-1,-2,1,10,4,5,8] 中的最大值
    var arr = [-1, -2, 1, 10, 4, 5, 8];

    function maxNumber(arr) {
        var max = arr[0]
        for (var i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i]
            }
        };
        return max
    }
    console.log(maxNumber(arr));
    var arr = [-1, -2, 1, 10, 4, 5, 8];

// 12.打印菱形
    var i, j, k;
    for (i = 1; i <= 4; i++) {
        //前四行
        for (j = 1; j <= 4 - i; j++) {
            document.write("&nbsp;&nbsp;"); //4-j 控制空格的数量
        }
        for (k = 1; k <= 2 * i - 1; k++) {
            document.write("*&nbsp;"); //2*i-1 控制*的数量
        }
        document.write("<br/>");
    }
    //后三行
    for (i = 1; i <= 3; i++) {
        for (j = 1; j <= i; j++) {
            document.write("&nbsp;&nbsp;"); //i控制空格的数量
        }
        for (k = 1; k <= 7 - 2 * i; k++) {
            document.write("*&nbsp;"); // 7-2*i控制*的数量
        }
        document.write("<br/>");
    }

<script>
       // 11.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
       //凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
       //写一个数组 存所有的人 
       function fn(n){
        //初始化一个数组
        var nums = []
        for(var i=0;i<n;i++){
            //设置所有的内容都是没有数过的
            nums[i] = false
        }
        //报数
        var count = 0
        var index = 0
        var total = nums.length
        while(total>1){
           if(!nums[index]){
                count++
                //数到了3 将total-1
                if(count==3){
                    count = 0 
                    nums[index] = true //表示已经数到了3
                    total --
                }
           }
           index++
           //数到最后重新循环
           if(index==nums.length){
             index = 0
           }
        }
        //只要拿出里面为false哪个下标就是对应的位置
        for(var index in nums){
            if(!nums[index]){
                return Number(index)+1
            }
        }
       }
       console.log(fn(10)); 
    </script>

 

posted @ 2022-08-01 19:08  可爱就要得到  阅读(42)  评论(0)    收藏  举报