js的简单的逻辑算法题
比如题目:寻找1~1000之内,所有能被5整除、或者能被6整除的数字
1 for(var i = 1 ; i <= 1000 ; i++){ 2 if(i % 5 == 0 || i % 6 == 0){ 3 console.log(i); 4 } 5 } |
上面这个算法,我们有一个术语“穷举法”。
穷: 完整。欲穷千里目,更上一层楼。穷尽。
举: 列举,推举。
穷举法:就是一个一个试。我们现在要寻找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++){ 3 var sum = sum + i; 4 } 1 console.log(sum); |
错误3: 每次for循环都要var一次,是不正确的:
1 //遍历1~100,将所有的数字扔到累加器里面 2 for(var i = 1 ; i <= 100 ; i++){ 3 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("你好"); 3 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){ 5 return a + b; 6 } 7 </script> |
return就是英语“返回”的意思,那么就表示此时这个“函数调用的表达式”(红色部分),值就是这个a+b。
● 函数里面可以没有return,如果有,只能有一个。不能有多个return;
● 函数里面,return后面不允许书写程序了,也就是说写在后面的程序无效;
js的简单的逻辑算法题的更多相关文章
- 简单的PHP算法题
简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...
- js 中的算法题,那些经常看到的
js中遇到的算法题不是很多,可以说基本遇不到.但面试的时候,尤其是一些大公司,总是会出这样那样的算法题,考察一个程序员的逻辑思维能力.如下: 1.回文. 回文是指把相同的词汇或句子,在下文中调换位置或 ...
- 19道常见的JS面试算法题
最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...
- js中字符和数组一些基本算法题
最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping 这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法 ...
- 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。
简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...
- 冒泡排序算法和简单选择排序算法的js实现
之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...
- 从一段简单算法题来谈二叉查找树(BST)的基础算法
先给出一道很简单,喜闻乐见的二叉树算法题: 给出一个二叉查找树和一个目标值,如果其中有两个元素的和等于目标值则返回真,否则返回假. 例如: Input: 5 / \ 3 6 / \ \ 2 4 7 T ...
- 链表算法题之中等级别,debug调试更简单
文章简述 大家好,本篇是个人的第 5 篇文章 从本篇文章开始,分享关于链表的题目为中等难度,本次共有 3 道题目. 一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两 ...
- leetcode算法题(JavaScript实现)
题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...
随机推荐
- react-native-scrollable-tab-view 实现 TabBar
1.创建组件 src/components/CustomTabBar/index.js /** * 自定义选项卡 */ import React, {Component} from 'react'; ...
- lodash 提取前N个元素 take
_.take(array, [n=1]) 从数组的起始元素开始提取 N 个元素. <!DOCTYPE html> <html lang="zh"> < ...
- GCM与C2DM相比有什么不同
eoe介绍:http://wiki.eoe.cn/page/Migration.html 官方地址:http://developer.android.com/google/gcm/c2dm.html
- 在线激活Pycharm(亲测有效)
(1)在激活界面的License server输入:http://idea.liyang.io:或者:点击help→Register→License sever ,输入http://idea.liya ...
- web报表工具FineReport常见的数据集报错错误代码和解释
在使用finereport制作报表.若预览错误发生.非常多朋友便手忙脚乱不知所措了,事实上没什么,仅仅要看懂报错代码和含义.能够非常快的排除错误,这里我就分享一下finereport的数据集报错错误代 ...
- iOS开发之实现半透明蒙层背景效果[用于下拉菜单页和分享页]
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- 【C语言天天练(二三)】errno变量
引言: 在C编程中,errno是个必不可少的变量.特别是在网络编程中. 假设你没实用过errno,那仅仅能说明你的程序不够健壮. 为什么会使用errno呢?这是系统库设计中的一个无奈之举.他很多其它的 ...
- c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h> void main(void) { EA=1; //开放总中断 E ...
- js将用户上传gif动图分解成多张帧图片
js将用户上传gif动图分解成多张帧图片 写在前面 工作中遇到一个这么一个需求:这是一个多图上传的场景,如果用户上传选择多张图片,则上传后直接展示多张图片,如果上传的图片是gif动图,则需要分解这张动 ...
- Angularjs学习笔记3_datepicker
1.使用jquery-ui +angular <script src="http://libs.useso.com/js/jquery/1.11.1/jquery.js&qu ...