for循环的附加题
1.公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性
公鸡最多50,母鸡最多100,小鸡最多200
var sum=0; for(var i=1;i<51;i++) { for(var j=1;j<101;j++) { for(var k=1;k<201;k++) { if(i*2+j*1+k*0.5==100 && i+j+k==100) { sum=sum+1; } } } } alert(sum);
总结:与上篇凑钱的题有异曲同工之处,同时也要注意的是每种至少一只,买100只;
2.羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能
羽毛球拍最多买13个 球最多买66个 水最多买100个
var sum=0; for(var i=1;i<14;i++) { for(var j=1;j<67;j++) { for(var k=1;k<101;k++) { if(i*15+j*3+k*2==200) { sum=sum+1; } } } } alert(sum);
总结:与凑钱的做法相类似,注意每种至少一个。
3.折纸:折多少次和珠穆朗玛峰一样高
1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米
var hou = 0.0001; for(var i=1;i>=1;i++) { hou = hou*2; if(hou>8848) { var cishu=i; break; } } alert(cishu);
总结:hou为厚度,找到了它的规律,其中break代表的是跳出全部循环,只要厚度大于8848时,cishu就跳出循环。
4.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问8个月后有多少对兔子,幼兔、小兔、成兔对数分别是多少。
幼兔 1 小兔 0 成兔 0 初始值
幼兔 0 小兔 1 成兔 0 第一个月
幼兔 1 小兔 0 成兔 1 第二个月
幼兔 1 小兔 1 成兔 1 第三个月
幼兔 2 小兔 1 成兔 2 第四个月
幼兔 3 小兔 2 成兔 3 第五个月
幼兔 5 小兔 3 成兔 5 第六个月
8 5 8
13 8 13
当前月份幼兔 = 上个月的成兔+上月小兔
当前月份小兔 = 上月幼兔
当前月份成兔 = 上月成兔+上月小兔
var sy = 1; var sx = 0; var sc = 0; var ny = 0; var nx = 0; var nc = 0; for(var i=0;i<8;i++) { //当前月份 ny = sc+sx; nx = sy; nc = sc+sx; //把当前月份变成上个月 var sy = ny; var sx = nx; var sc = nc; } alert(ny); alert(nx); alert(nc);
总结:sy=上个月幼兔;sx=上个月小兔,sc=上个月成兔;ny=现在的幼兔,nx=现在的小兔,nc=现在的成兔;i=0时,就已经相当于是第一个月了,把当前月份变成上个月。