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+"米 ")
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!+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/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));
}