JS逻辑训练题--循环

JS逻辑训练题–循环

前篇循环中介绍了while、do…while、for循环,如何利用循环实现数学逻辑呢,看看下面几道题训练一下。
1.求S = a + aa + aaa + aaaa + aaaaa + aaaaaa + aaaaaaa +…… a和n从键盘输入,例如用户输入的a是2,n是5,则要求将2+22+222+2222+22222的和计算出来

	var a = Number(prompt("请输入a值"));
    var n = Number(prompt("请输入n值,1-9"));
    var n1 = n;
    num1 = 1;
    var sum = 0;
    for (var i = 1; i <= a; i++) {
    
    
      num1 = num1 * 10;//控制每轮为10  100  1000  10000
      console.log("num1为" + num1);
      temp = n1 * num1; //让输入的那个数不随递归增加
      console.log("temp为" + temp);
      n = n + temp;
      sum += n - temp;//算出来第一次 为十位,需减去十位数
      document.write(n - temp);
      if (i < a) {
    
    
        document.write("+");//最后一个加号不显示
      }
    }
    document.write("=" + sum);

2.有一个分数列2/1,3/2,5/3,8/5,13/8,21/13….,求前20项的和

	var sum = 0 ,a = 1, b = 1, c;
     for (var i = 1; i <= 20; i++) {
    
    
         c = a;   //中间变量
         a = b;   //分母
         b = c + b;   //分子
         sum += b/a;
         document.write(b+"/"+a+"+");
     }
     document.write("="+sum);

3.求Fibonacci数列40个数.这个数列特点为,第1,2两个数为1,1,从第三个数开始,该数是前面两个数的和.即1,1,2,3,5,8,13,21……

 var a=0,b=1;
    for (var i = 0; i < 40; i++) {
    
    
        c = a;     //上一个a  0  1  1
        a = a+b;   //        1  1  2
        b = c;     //        0  1
        document.write((i+1)+":"+a+"<br/>");
    } 

4.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

	//反着算,第一天只有一个,加一乘以2
	var a = 1;
    for (var i = 1; i < 10; i++) {
    
    
        a=(a+1)*2;
        document.write(a+"<br/>")
    }
    document.write("第一天一共有:"+a);

5.一个球从1000米高空下落,落地后弹起,每次弹起的高度是下落时的一半,问第五次落地时弹起的高度,一共又经历了多长的距离?

     var num = 1000, sum=0;  //1000米高空
     a = num;
     for (var i = 0; i < 5; i++) {
    
    
         num = a/2 + a;  //每次走过的路程
         a = a/2;        //每次下落高度
         sum += num;     //总路程
         document.write("第"+(i+1)+"次下落弹起的高度:"+a+"米&emsp;")
         document.write("第"+(i+1)+"走过的路程:"+num+"米<br/>")
     }
     document.write("一共经历了"+sum+"米");

6.两个数字的最小公倍数和最大公约数

var a = Number(prompt("a"));
     var b = Number(prompt("b"));
     for (var i = 1;  ; i++) {
    
    
         if (i%a ==0 && i%b == 0){
    
    
             document.write("最小公倍数:"+i+"<br/>");
             break;
         }
     }
     for (var i = a; i>0 ; i--) {
    
    
         if (a%i==0 && b%i == 0){
    
    
             document.write("最大公约数:"+i);
             break;
         }
     } 
  1. 1!+2!+3!+4!。。。n!
var sun = Number(prompt("输入要运算"))
   var num2 = 0;
   for (var i = 1; i <= sun; i++) {
    
    
     var num = 1;
     var j = 1;
     while (j <= i) {
    
    
       num = j * num;
       j++;
     }
     console.log(num);
     num2 = num2 + num;
   }
   console.log("阶乘和为:" + num2);
  1. 1/1-1/2+1/3-1/4+1/5…1/n
	var n = Number(prompt("请输入n的值"));
    var num = 0;
    var num1 = 0;
    if(n>=2){
    
    
   	 for (var i = 1; i <= n; i = i + 2) {
    
    
      num += 1 / i;
    	}
   	 for (var j = 2; j <= n; j = j + 2) {
    
    
      num1 += 1 / j;
   		}
    	console.log("值为" + (num - num1));
    }

猜你喜欢

转载自blog.csdn.net/yun_shuo/article/details/112793134
今日推荐