• 2019.7.24循环结构以及昨天的预习题。


    预习题:

    1、计算1-100之间的和 积
    2、在页面中输出 九九乘法表

    1、

    var sum =0,i=1;

    for(;;){
    sum += i;
    i++;
    if(i==100){
    break;
    }
    console.log('1-100的和='+ sum);

    2、

    var result ="";
    for(var i =1;i<=6;i++){//控制行数
    for(var j =1;j<=6;j++){//控制每一列
    result +="*";
    }
    result +=" ";

    }
    console.log(result);

    循环结构:

    // 循环:一遍又一遍的重复执行相同或相似的代码
    /*特点:
    1、循环条件 规定循环的执行次数
    2、循环的操作 要执行的相同或显示的语句*/
    // 1、while循环结构
    /*while(条件){
    循环体
    }
    1)判断 循环条件
    2)循环条件为真 true 执行循环体
    再判断条件,如果条件为真 执行循环体
    ....
    3)循环条件为假 false 则结束循环操作*/

    // 循环的三要素
    /*
    1、循环变量
    2、循环条件 满足时才执行循环体
    3、循环变量的变化 变化是趋向于条件的不满足 趋向于循环的结束
    */

    while循环

    // 循环生产随机数 1-10之间
    // 接受输入猜数字 输入的数字比随机数大 提示“猜大了”;反之“猜小了” ...直到输入的数字猜对了为止
    // 输入exit 则退出游戏
    /*
    猜得次数(无数次)
    猜的数和随机数不相等
    猜的数和随机数相等*/
    var r = parseInt(Math.random()*10+1) ;//Math.random()生产的0-1之间的随机数
    // console.log(r);
    while(true){
    // 接受用户输入数字
    var input = prompt("请输入你猜的数字:");

    if( input == "exit"){
    // 主动退出游戏
    alert("放弃了,拜拜!");
    break;
    }

    // 将 input 和 r 做比较
    if(input > r){
    alert('猜大了...');
    }else if(input < r){
    alert('猜小了....');
    } else {
    alert('猜对了!');
    // 结束循环 关键字 break
    break;
    }
    }

    do while 循环

    /*语法:
    do{
    循环体
    }while(条件);
    流程:
    1、先执行循环体
    2、判断循环条件
    如果循环条件成立true,则继续执行循环操作
    如果训话条件不成立false,则退出循环
    */
    // 循环生产随机数 1-10之间
    // 接受输入猜数字 输入的数字比随机数大 提示“猜大了”;反之“猜小了” ...直到输入的数字猜对了为止
    // 输入exit 则退出游戏
    function guessNum(){
    var r = Math.random()*10+1 ;
    r = r | 0;
    do{
    var input = prompt("请输入一个数");
    // 将 input 和 r 做比较
    if(input > r){
    alert('猜大了...');
    }else if(input < r){
    alert('猜小了....');
    } else {
    alert('猜对了!');
    // 结束循环 关键字 break
    break;
    }
    }while(input != "exit");
    }
    guessNum();

    // while 和 do while的区别
    // 1、while:先判断,后执行 可能一次都不执行循环体
    // 2、do while:先执行,后判断 至少会执行一次循环体

    for循环

    // 语法:
    // for(达表示1;表达式2;表达式3){
    // 循环体
    // }
    // 表达式1:声明循环变量 可以省略 循环变量需要在循环开始之前声明好
    // 表达式2:循环条件的判断 可以省略 在循环体中添加结束循环的判断 否则就会形成死循环
    // 表达式3:更新循环变量 可以省略 在循环体中添加循环变量的更新语句
    // 三个表达式可以省略,但是;不能省略
    // 流程:
    // 1、执行表达式1 申明循环变量
    // 2、判断循环条件是否成立 成立则执行循环体
    // 3、执行表达式3,更新循环变量
    // 执行表达式2 判断循环条件是否成立 成立则执行循环体
    // 表达式2执行的结果为false 则终止循环
    // 适用于:固定循环次数

    1 创建一个函数,返回1+1/2+1/3+1/4+...+1/999的和

    function fun1(){
    var sum = 0;
    // 从1开始到999结束
    /*for(var i = 1;i<1000;i++){
    sum += 1/i;
    }*/
    // 从999开始到1结束
    for(var i=999 ; i>=1 ;i--){
    sum += 1/i;
    }
    console.log('1+ 1/2 + 1/3 + 1/ 4+...+ 1/999 的和'+sum);
    }

    //2、定义一个函数,判断素数
    function fun2(){
    // 接受输入一个数字
    var num = Number(prompt("请输入一个数"));
    // 素数的条件:只能被1和自身整除的数
    // 从2开始判断 到num-1 9 9%2 9%3 9%4 9%5 9%6 9%7 9%8 50
    var isSu = true;//假设 默认该数字就是素数
    for(var i=2;i<=num/2;i++){
    // 判断num取i的余数是否为0
    if(num%i == 0){
    // 不是素数
    isSu = false;
    // 直接退出循环
    break;
    }
    }

    if(isSu){//根据开关来判断这个数到底是不是素数
    console.log(num+'是素数');
    }else{
    console.log(num+'不是素数');
    }

    }

    //3、有一个对兔子,从出生的第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总和是多少?
    function fun3(){
    /*
    月份 兔子总数
    1 1
    2 1
    3 2
    4 3
    5 5
    6 8
    7 13
    8 21
    9 34
    10 55
    斐波那契数列
    规律:每个数都是前面两个数的和
    n1 + n2 = n3
    n2 + n3 = n4
    n3 + n4 = n5

    */
    /*var n1 =1,n2 =1;
    console.log(n1,n2);
    for(var i=1;i<9;i++){
    n1 = n1 + n2;
    n2 = n1 + n2;
    console.log(n1,n2);
    }*/
    var n = Number(prompt("请输入需要查看兔子总数的月份:"));
    // var sum = f(n);
    var sum = fun4(n);
    console.log('兔子的总数为:'+sum);
    }
    // 递归算法
    function f(n){
    if(n==1 || n==2){
    return 1;
    }
    return f(n-1)+f(n-2);
    }
    /*
    递归:在函数内,又调用自己
    递归调用的内层函数,是在外层函数还未结束的时候已经开始了内层函数 ,外层函数的调用就会被阻塞
    缺点:算法复杂度太高,且浪费内存
    大部分的递归,都可以使用循环来的替代
    */
    function fun4(n){
    if(n==1 || n==2){
    return 1;
    }else{
    var f1 = 1,f2 = 1,fn;
    for(var i =1;i<=n-2;i++){
    fn = f1+f2;
    f1 = f2;
    f2 = fn;
    }
    return fn;
    }
    }

  • 相关阅读:
    H5页面尺寸兼容rem
    Mysql索引、explain执行计划
    mysql物理结构
    mysql 架构
    excel 写
    好的开源项目
    批量插入大量数据
    文件下载回显
    shardingsphere 实现 springboot集成 多数据源
    前后端代码特殊符号乱码问题
  • 原文地址:https://www.cnblogs.com/awei313558147/p/11246207.html
Copyright © 2020-2023  润新知