12道 javaScript 经典逻辑题,是否承载着你的回忆

简介: 12道 javaScript 经典逻辑题,是否承载着你的回忆

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 + "&nbsp;&nbsp;&nbsp;");
    // 不够对齐,添加样式
    document.write("<span>" + j + "*" + i + "=" + i * j + "</span>");
  }
  // 输出一个换行
  document.write("<br />");
}
相关文章
|
7月前
|
JavaScript 前端开发 算法
设计一个简单的JavaScript版“俄罗斯方块”游戏的基本逻辑流程。
```md 设计JavaScript版俄罗斯方块游戏涉及初始化环境、创建游戏容器、管理变量、加载音效。游戏循环中生成方块、键盘控制移动与旋转、碰撞锁定、行消除及分数更新。当游戏区域填满时结束游戏,显示结束画面。还包括暂停、重置等辅助功能。伪代码示例展示了核心逻辑,实际实现需考虑更多细节和用户体验增强。 ```
159 3
|
1月前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
39 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
4月前
|
数据采集 JavaScript 前端开发
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
爬虫技术是数据采集的关键手段。针对动态加载的网页,传统HTTP请求及HTML解析难以满足需求。本文章介绍如何利用ClearScript V8库在.NET环境中执行复杂的JavaScript逻辑,以提高爬虫对动态内容的抓取效率。文章首先概述了ClearScript V8的功能,如何处理如微博这类含有大量动态加载内容的网站。通过使用代理IP、设置cookie和user-agent等方式模拟真实用户访问,确保了爬虫的稳定性和隐蔽性。提供了一个具体的C#爬虫示例,演示如何结合ClearScript V8和HTTP客户端来实现上述功能。这种方法不仅增强爬虫的灵活性,也极大地提高数据采集的效率和可靠性。
164 1
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
|
4月前
|
JavaScript 前端开发
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
JS:类型转换(四)从底层逻辑让你搞懂经典面试问题 [ ] == ![ ] ?
|
5月前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(22)--- 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中
循序渐进VUE+Element 前端应用开发(22)--- 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中
|
6月前
|
自然语言处理 JavaScript 前端开发
【JavaScript】JavaScript基础知识强化:变量提升、作用域逻辑及TDZ的全面解析
【JavaScript】JavaScript基础知识强化:变量提升、作用域逻辑及TDZ的全面解析
72 3
|
6月前
|
存储 前端开发 JavaScript
[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维
【6月更文挑战第2天】这是一个前端小项目合集,包括图片轮播器、动态列表、模态框、表单验证等14个项目,旨在帮助初学者提升编码技能和实战经验。每个项目提供关键提示,如使用HTML、CSS和JavaScript实现不同功能,如事件监听、动画效果和数据处理。通过这些项目,学习者可以锻炼前端基础并增强实际操作能力。
128 2
|
6月前
|
前端开发 JavaScript 搜索推荐
[初学者必看]JavaScript 15题简单小例子练习,锻炼代码逻辑思维
【6月更文挑战第3天】这是一个JavaScript编程练习集,包含15个题目及答案:计算两数之和、判断偶数、找数组最大值、字符串反转、回文检测、斐波那契数列、数组去重、冒泡排序、阶乘计算、数组元素检查、数组求和、字符计数、数组最值和质数判断以及数组扁平化。每个题目都有相应的代码实现示例。
475 1
|
5月前
|
JavaScript 前端开发
前端 JS 经典:统一 Vite 中图片转换逻辑
前端 JS 经典:统一 Vite 中图片转换逻辑
93 0
|
7月前
|
JavaScript 前端开发
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
46 1