JavaScript循环实例
几个经典的循环案例:
1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米
var i=0;
var h=0.0001;
while(true){
i++;
h=h*2;
if(h>8848){
break;
}
}
alert(i);
首先定义折叠次数i,一张纸初始高度0.0001,然后因为不清楚折叠的次数,这里可以考虑使用while循环。
while循环中,第一次折叠,所以i++,然后高度乘以2,然后判断高度是否大于8848,如果是跳出此次,如果不是则继续循环,直到h>8848,然后执行break跳出,输出i的值。
这里还有一个方法:
var i=0;
var h=0.0001;
while(h<=8848){
h=h*2;
i++;
}
alert(i);
思路基本相同,在while中判断h小于等于8848,如果不是,循环中h乘以2,i加一,直到h大于8848,输出i的值。
2.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问6个月后有多少对兔子,幼兔、小兔、成兔对数分别是多少。
var y=1;
var x=0;
var c=0;
var sy=0;
var sx=0;
var sc=0;
for(i=1;i<=6;i++){
sy=y;
sx=x;
sc=c;
y=sc+sx;
x=sy;
c+=sx;
}
alert(y+","+x+","+c);
这里最大的问题就是要设置一个中间变量,不仅要定义当前兔子的数量,还要定义出上个月兔子的数量,然后推算:
开始:幼兔 1 小兔 0 成兔 0 一个月后:幼兔 0 小兔 1 成兔 0 二个月后:幼兔 1 小兔 0 成兔 1 三个月后:幼兔 1 小兔 1 成兔 1 四个月后:幼兔 2 小兔 1 成兔 2 五个月后:幼兔 3 小兔 2 成兔 3 六个月后:幼兔 5 小兔 3 成兔 5
当前月份幼兔 = 上个月的成兔+上月小兔 当前月份小兔 = 上月幼兔 当前月份成兔 = 上月成兔+上月小兔
然后定义出当前每种兔子数量,上个月每种兔子数量,建立循环,在循环中将本月兔子数量的值赋给上个月,再根据上边的式子计算当前月份兔子数量,需要注意控制循环6次,所以i=1,i<=6。
3.羽毛球拍15元,球3元,水2元。200元每种至少一个,200块钱正好花完,有多少可能 羽毛球拍最多买13个 球最多买66个 水最多买100个
因为有三种物品要买,所以这里考虑要用三层for循环嵌套
var s=0;
for(var i=1;i<=13;i++){
for(var l=1;l<=66;l++){
for(var k=1;k<=100;k++){
if(15*i+3*l+2*k==200){
s=s+1;
}
}
}
}
alert(s);
三层fr循环,每一层代表每个商品的数量,然后判断三种商品总金额是不是正好200,如果是,s也就是成功的方案+1。
4.公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性 公鸡最多50,母鸡最多100,小鸡最多200
var m=0;
for(var i=1;i<=50;i++){
for(var l=1;l<=100;l++){
for(var k=1;k<=200;k++){
if((i*2+l*1+k*0.5==100)&&(i+l+k==100))
{
m=m+1;
}
}
}
}
alert(m);
这里思路和上一个问题相同,唯一需注意的是,题目对记得总金额和数量都有要求,所以if判断中,要有两个条件用&&或者连接。
5.凑钱1,2,5凑20元钱有多少可能 1元 20 2元 10 5元 4
var m=0;
for(var i=0;i<=20;i++){
for(var l=0;l<=10;l++){
for(var k=0;k<=4;k++){
if(i+l*2+k*5==20){
m=m+1;
}
}
}
}
alert(m);
这个题目和上面两个的思路是相同的,需要注意的是因为没有规定每种钱至少一种,所以循环初始值为0。
关于循环,需要注意:
1 先根据情况确定使用哪种循环
2 在看方法,循环嵌套,还是中间变量
3 以上3.4.5题由于总金额在if中已经固定了,所以外层嵌套的循环中的判断条件只要不小于最小值,再大也没有关系,所以直接设定了只买一种商品是最多内卖多少作为判断条件。
- 内部威胁那些事儿(二):系统破坏
- 从用户行为去理解内容-item2vec及其应用
- Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
- Websocket HandShake Sec-WebSocket-Accept 生成策略
- 关于JVM CPU资源占用过高的问题排查
- ActiveMQ简单介绍以及安装
- Java Process destroy方法kill进程,返回码测试
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JDBC批量提交SQL的几点问题解答
- 工具推荐: 汽车CAN总线分析框架CANToolz
- Windows下jps, jconsole无法查看本地java进程问题解决
- DateFormat 线程不安全
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Array - 34. Find First and Last Position of Element in Sorted Array
- Array - 31. Next Permutation
- Docker快速部署一个属于你自己的博客
- golang实现BST和AVL
- golang实现跳表(SkipList)
- 一致性哈希的golang实现
- Array - 75. Sort Colors
- Array - 309. Best Time to Buy and Sell Stock with Cooldown
- Array - 55. Jump Game
- 【技术创作101训练营】超简单的公司Git+个人Git共存方式
- css高度坍塌与清除浮动
- 无缝切换在线升级的终极探索
- promise详解
- Vuex是怎样进行状态管理的
- Matplotlib玩转动态可视化