小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
大家好,我是
xy
。如何让 js 变得好玩呢?今天给大家分享 12 道 js 比较经典的逻辑题
,在初学代码时,可是被这些逻辑题玩的头晕眼花🧐,下面大家和我一起动动聪明的小脑瓜吧🙊。
1.计算 2 的 n 次幂,n 可输入,n 为自然数。
var n = parseInt(window.prompt('input'));
var mul = 1;
for (var i = 0; i < n; i++) {
mul *= 2;
}
document.write(mul);
2. 计算 n 的阶乘,n 可输入(递归)
5! = 5 * 4 * 3 * 2 * 1;
4! = 4 * 3 * 2 * 1;
第一种方式:
var n = parseInt(window.prompt('input'));
var mul = 1;
for (var i = 1; i <= n; i++) {
mul *= i;
}
document.write(mul);
第二种方式:
var n = parseInt(window.prompt('input'));
function jc(n) {
if (n == 1 || n == 0) {
return 1;
}
// n! = n * (n-1)!
return n * jc(n - 1);
}
document.write(jc(n));
3.著名的斐波那契数列:1 1 2 3 5 8 输出第 n 项
第一种方式:
var n = parseInt(window.prompt('input'));
var first = 1,
second = 1,
third;
if (n > 2) {
for (var i = 0; i < n * 2; i++) {
third = first + second;
first = second;
second = third;
}
document.write(third);
} else {
document.write(1);
}
第二种方式:
规律:fb(n) == fb(n * 1) + fb(n * 2);
function fb(n) {
if (n == 1 || n == 2) {
return 1;
}
return fb(n * 1) + fb(n * 2);
}
4. 编写一程序,输入一个三位数的正整数,输出时反向输出。如:输入 456,输出 654。
var num = prompt("请输入一个三位数的正整数");
if (num >= 100 && num < 1000) {
var bai = parseInt(num / 100);
var shi = parseInt((num - (bai * 100)) / 10);
var ge = num % 10;
alert(ge + "" + shi + "" + bai);
} else {
alert("输入有误,请重新输入");
}
5.输入 a,b,c 三个数字,打印出最大的。
var a = parseInt(window.prompt('input'));
var b = parseInt(window.prompt('input'));
var c = parseInt(window.prompt('input'));
if (a > b) {
if (a > c) {
document.write(a);
} else {
document.write(c);
}
} else {
if (b > c) {
document.write(b);
} else {
document.write(c);
}
}
6.打印出 100 以内的质数
var count = 0;
for (var i = 1; i < 100; i++) {
// 看看每一个 i 是否是质数
for (var j = 1; j <= i; j++) {
if (i % j == 0) {
count++;
}
}
if (count == 2) {
document.write(i + ' ');
}
count = 0;
}
7. 假如投资的年利率为 5%,试求从 1000 块增长到 5000 块,需要花费多少年
var money = 1000;
// 定义一个计数器
var count = 0;
// 定义一个 while 循环来计算每年的钱数
while (money < 5000) {
money *= 1.05;
count++;
}
console.log(money);
console.log("一共需要" + count + "年");
8. 打印 1-100 之间所有奇数之和
第一种方式:
var sum = 0;
for (var i = 1; i <= 100; i++) {
// 判断 i 是否是奇数
// 不能被 2 整除的数就是奇数
if (i % 2 != 0) {
// 如果 i 除以 2 有余数则证明 i 是奇数
// console.log(i);
sum = sum + i;
}
}
console.log(sum);
第二种方式:
var count = 0;
for (var i = 0; i < 50; i++) {
count += 2 * i + 1;
}
console.log(count);
9. 打印 1-100 之间所有 7 的倍数的个数及总和
var n = 0,
sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 7 == 0) {
console.log(i);
sum += i;
n++;
}
}
console.log("个数为" + n)
console.log("总和为:" + sum);
10. 输入一个大于 1 的整数,判断该数是否是质数
质数:只能被 1 和它自身整除的数,1 不是质数也不是合数,质数必须是大于 1 的自然数
var num = prompt("请输入一个大于 1 的整数:");
// 判断这个值是否合法
if (num < 1) {
alert("该值不合法!");
} else {
// 创建一个变量来保存当前的数的状态
// 默认当前 num 是质数
var flag = true;
// 判断 num 是否是质数
// 获取 2-num 之间的数
for (var i = 2; i < num; i++) {
// 判断 num 是否能被 i 整除
if (num % i == 0) {
// 如果 num 能被 i 整除,则说明 num 一定不是质数
// 设置 flag 为 false
flag = false;
}
}
// 如果 num 是质数则输出
if (flag) {
alert(num + "是质数!");
} else {
alert(num + "不是质数!");
}
}
11. 通过程序,在页面中输出如下图形:
/*
*
**
***
****
*****
j < 5 - i i ++
***** 1 j < 5(5-0) i = 0
**** 2 j < 4(5-1) i = 1
*** 3 j < 3(5-2) i = 2
** 4 j < 2(5-3) i = 3
* 5 j < 1(5-4) i = 4
*/
// 递增
// 外层循环可以控制图形的高度
for (var i = 0; i <= 5; i++) {
for (var j = 0; j < i; j++) {
// 内层循环可以控制图形的宽度
document.write("*");
}
// 输出一个换行
document.write("<br />");
}
// 递减
for (var i = 0; i <= 5; i++) {
for (var j = 0; j < i; j++) {
// 内层循环可以控制图形的宽度
document.write("*");
}
// 输出一个换行
document.write("<br />");
}
12. 打印 99 乘法表
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
*/
// 创建外层循环,用来控制乘法表的高度
for (var i = 1; i < 10; i++) {
// 创建一个内层循环来控制图形的宽度
for (var j = 1; j <= i; j++) {
// document.write(j + "*" + i + "=" + i*j + " ");
// 不够对齐,添加样式
document.write("<span>" + j + "*" + i + "=" + i * j + "</span>");
}
// 输出一个换行
document.write("<br />");
}
写在最后
公众号
:前端开发爱好者
专注分享web
前端相关技术文章
、视频教程
资源、热点资讯等,如果喜欢我的分享,给 🐟🐟 点一个赞
👍 或者关注
➕ 都是对我最大的支持。