JS经典逻辑题
想不到吧JavaScript也有逻辑运算题,其实js的逻辑运算题跟Java差不多,都是利用学过的知识进行数学运算,简单来说就是用程序实现古典数学运算。然后呢小编觉得有些还比较有意思经典,所以整理整理。
第一题
猴子摘下了若干个桃子,当即吃了一半,还不过瘾,有多吃了一个;第二天,又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到了第十天的时候,发现只剩下一个桃子。
求:第一天共摘了多少个桃子
解决这题的思维不能用寻常思维来思考,要倒着思考,要从第十天倒着向后推
第10天,吃的只剩1个桃子了。第9天了,是第10天的2倍加1个,即3个。第8天了,是第9天的2倍加1个,即7个。依次向后推理,知道了思路写代码也就简单了
//定义函数
function monkey(){
//定义总桃子数
var sum = 1;
//循环算出每天的桃子
for(var i = 10; i > 1 ; i--) {
sum =(sum + 1) * 2;
}
alert(sum);
}
//调用
monkey();
第二题
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
因为153=1的三次方+5的三次方+3的三次方。
经典题水仙花数,很有意思的数字,一共也没几个,所有的水仙花数只有三个:153,370,371,407。嗯~这就是要判断个、十、百位上的数的三次方等不等于本身吗,所以代码如下
function narcissus() {
// 定义个,十,百位上的数
var a,b,c;
//循环
for (var i = 100; i <= 999;i++) {
a = i % 10;
b = parseInt(i / 10) % 10;
c = parseInt(i / 100);
//判断是否为水仙花数
if((a*a*a)+(b*b*b)+(c*c*c) == i){
document.write(i + '<br/>');
}
}
}
narcissus();
这里唯一的就是拿到个、十、百位上的数有点不好理解,个位:直接取模(%)10就好;十位:要先除(/)10拿到十位和百位上的数组成的两位数,再取模(%)10拿到想要的值。注意:要转成整数;百位:直接除(/)100,注意:要转成整数。下期再继续。