比如题目:寻找1~1000之内,所有能被5整除、或者能被6整除的数字

for(var i = 1 ; i <= 1000 ; i++){

2  if(i % 5 == 0 || i % 6 == 0){

3  console.log(i);

4  }

}

上面这个算法,我们有一个术语“穷举法”

穷:  完整。欲穷千里目,更上一层楼。穷尽。

举:  列举,推举。

穷举法:就是一个一个试。我们现在要寻找1~1000之内,所有能被5整除、或者能被6整除的数字。

我们的思路,就是将1、2、3、4、……998、999、1000依次去试验。看看这个数字,能不能被5或者6整除。

这时候你说,老师,那计算机太辛苦了。你看,13这个数字,为什么还要试呢?打眼一看就不能被5、6整除。

计算机就是一个奴隶。它没有思维,它就是一个不吃饭,有着极强计算力的东西。

二、几道算法练习

2.1 题目1:报7游戏的安全数

大家从小到大,都玩儿过的一个庸俗的游戏:

游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。

请在控制台输出1~60之间的所有“安全数”。

比如:

1、2、3、4、5、6、8、9、10、11、12、13、15、16、18、19、20、22、23、24、25、26、29、30……

答案见案例

2.2 题目2:水仙花数

水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。

比如153就是水仙花数。因为:

13+53+33 = 153

100~999之内,只有4个水仙花数,请找出来。

特别经典的算法,是每个学习编程的人,都要会做。

答案见案例,我们只列出数值答案: 153、370、371、407


2.3 题目3:求1~100的和

求和的题目,涉及到了新的一种算法思想,叫做“累加器”。

1+2+3+4+5+6……

正确的:

1  var sum = 0; //累加器

2  //遍历1~100,将所有的数字扔到累加器里面

3  for(var i = 1 ; i <= 100 ; i++){

4  sum = sum + i;

5  }

6  console.log(sum);

初学者常见的错误:

错误1:不声明sum,不行的,因为所有的变量都要声明:

1  //遍历1~100,将所有的数字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

3  sum = sum + i;

4  }

5  console.log(sum);

错误2: sum不能在for里直接声明:

1  //遍历1~100,将所有的数字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

var sum = sum + i;

4  }

1  console.log(sum);

错误3: 每次for循环都要var一次,是不正确的:

1  //遍历1~100,将所有的数字扔到累加器里面

2  for(var i = 1 ; i <= 100 ; i++){

var sum = 0;//累加器

4  sum = sum + i;

5  }

6  console.log(sum);


2.4 求阶乘

所谓的阶乘,比如6的阶乘,就是1*2*3*4*5*6 = 720。

现在,计算13的阶乘。

1 var result = 1; //累乘器

2

3 for(var i = 1 ; i <= 13 ; i++){

4  result = result * i;

5 }

6 console.log(result);

2.5 用户输入一个数,输出因数的个数

昨天晚上的作业3,就是用户输入一个数,输出所偶遇能够整除它的数字。

比如,

用户输入48,此时输出1、2、3、4、6、8、12、16、24、48 。  共10个数字。

用户输入21,此时输出1、3、7、21.共4个数字。

今天的这道题目,和昨天的这个题目非常像,不过不输出完成序列,只输出个数。

也就是说,用户输入48,弹出10

用户输入21,弹出4

用户输入11,弹出2

提示:此题用到累加器。

2.6 判断质数

质数:就是只能被1和自己整除。

翻译过来:它的因数个数是2。

比如:2、3、5、7、11、13、17、19、23、29、31、37……

用户输入一个数字,弹出这个数字是否是质数。

提示,用2.5的思路。

答案见案例。


三、函数

3.1 初步认识函数

1  <script type="text/javascript">

2  console.log("你好");

sayHello(); //调用函数

4

5  //定义函数:

6  function sayHello(){

7  console.log("欢迎");

8  console.log("welcome");

9  }

10  </script>

11 </body>

函数,是一种封装。就是将一些语句,封装到函数里面。通过调用的形式,执行这些语句。

函数的使用,是两个步骤,第一步,函数的定义

语法:

1 function 函数名字(){

2

3 }

function就是英语“函数”、“功能”的意思。顾名思义,将一些功能封装到函数里面。

function是一个关键字,和var、typeof一样,都是关键字,后面要加空格。

函数名字的命名规定,和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。

后面有一对儿空的小括号,里面是放参数用的,下午介绍。大括号里面,是这个函数的语句。

常见错误:

不能小括号包裹大括号:

1 function sayHello({

2

3 })

不能忘了小括号对儿:

1 function sayHello{

2

3 }


第二步,函数的调用。

函数如果不调用,等于白写。

调用一个函数,太简单了,就是这个函数的名字后面加小括号对儿。

语法:

1 函数名字();

定义函数,可以在调用的后面:这是JS的语法特性,函数声明头的提升。知道就行了。

1  console.log("你好");

2  sayHello(); //调用函数

3

4  //定义函数:

5  function sayHello(){

6  console.log("欢迎");

7  console.log("welcome");

8  }

函数的功能、好处:

1) 将会被大量重复的语句写在函数里面,这样以后需要这些语句的时候,直接调用函数,不用重写那些语句。

2) 简化编程,让编程变的模块化。

3.2 函数的参数

实际参数和形式参数的个数,要相同。

1  qiuhe(3,4);

2  qiuhe("3",4);

3  qiuhe("我爱你","中国");

4

5  function qiuhe(a,b){

6  console.log(a + b);

7  }

3.3 函数的返回值

1  <script type="text/javascript">

2  console.log(qiuhe(3,4));

3

4  function qiuhe(a,b){

return a + b;

6  }

7  </script>

return就是英语“返回”的意思,那么就表示此时这个“函数调用的表达式”(红色部分),值就是这个a+b。

● 函数里面可以没有return,如果有,只能有一个。不能有多个return;

● 函数里面,return后面不允许书写程序了,也就是说写在后面的程序无效;

js的简单的逻辑算法题的更多相关文章

  1. 简单的PHP算法题

    简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...

  2. js 中的算法题,那些经常看到的

    js中遇到的算法题不是很多,可以说基本遇不到.但面试的时候,尤其是一些大公司,总是会出这样那样的算法题,考察一个程序员的逻辑思维能力.如下: 1.回文. 回文是指把相同的词汇或句子,在下文中调换位置或 ...

  3. 19道常见的JS面试算法题

    最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...

  4. js中字符和数组一些基本算法题

    最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping  这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法 ...

  5. 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。

    简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...

  6. 冒泡排序算法和简单选择排序算法的js实现

    之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...

  7. 从一段简单算法题来谈二叉查找树(BST)的基础算法

    先给出一道很简单,喜闻乐见的二叉树算法题: 给出一个二叉查找树和一个目标值,如果其中有两个元素的和等于目标值则返回真,否则返回假. 例如: Input: 5 / \ 3 6 / \ \ 2 4 7 T ...

  8. 链表算法题之中等级别,debug调试更简单

    文章简述 大家好,本篇是个人的第 5 篇文章 从本篇文章开始,分享关于链表的题目为中等难度,本次共有 3 道题目. 一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两 ...

  9. leetcode算法题(JavaScript实现)

    题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...

随机推荐

  1. 【Excle】动态更新数据下拉菜单

    现在我们制作了一个简单的下拉菜单,如下: 但是随着公司的逐渐扩大,部门也变得多了,目前我是把数据范围写死的 ,所有每次添加一个部门,就得修改数据范围,那么现在我们不想修改这个范围了,想让他每次添加部门 ...

  2. 【Java】Java_05 标识符与字符集

    1.标识符 用作给变量.类和方法命名.注意: 表示类名的标识符用大写字母开始.如:Man, GoodMan 表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始.green(),greenC ...

  3. (一)Oracle学习笔记—— 表和表空间

    1. 表空间 一个数据库可以有多个表空间,一个表空间里可以有多个表.表空间就是存多个表的物理空间:可以指定表空间的大小位置等.  1.1 创建表空间语句 create tablespace ts3 d ...

  4. Java代码Bug分析插件 FindBugs

    http://www.oschina.net/p/findbugs FindBugs是一个能静态分析源代码中可能会出现Bug的Eclipse插件工具.

  5. Git使用笔记三

    场景:开源社区提交代码每个人每一个MR只有两个commits,一个是merge前的,一个是merge时候的.因为他们不过是把自己在同一个PR上面提交的commits全部压缩成了一个而已.这个在git上 ...

  6. 在训练CNN时,loss稳定在log(类别数)

    参见知乎问题! https://www.zhihu.com/question/275774218 很多框架都会有一个问题,当卷积 weight NaN 之后,卷积的 output 会变成 NaN.然后 ...

  7. VS代码注释插件GhostDoc

    http://community.submain.com/blogs/tutorials/archive/2013/03/28/how-to-access-ghostdoc-pro-features. ...

  8. Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)

    1.两者都属高速并行配置模式.SelectMAP是早期的FPGA两类配置模式之一,是相对于串行(Serial)配置而言的,与主串(Master Serial)和从串(Slave Serial)模式对应 ...

  9. FPGA和DSP间基于SRIO的高速通信系统设计

    作者:陈婷,岳强,汪洋 解放军信息工程大学 摘要: 现代信号处理系统通常需要在不同处理器之间实现高速数据通信,SRIO协议由于高效率.低延时的特性被广泛使用.本文研究了在FPGA和DSP两种处理器之间 ...

  10. abp 列表和明细页面的规则说明

    0>列表区域mainviewbody 1>列表头mainviewheader 名称 2>列表条件mainviewcodtionbody 条件区 3>列表工具栏mainviewt ...