var sum = 200; for(var i= 0;i<6;i++) { sum = parseInt(sum/2)-1 } alert(sum); 例题2:公园里有一些桃子子,猴子每天吃掉一半以后扔掉一个,第6天的时候发现还剩下1个桃子,问开始有几个桃子? var sum = 1; for(var i = 0;i<6;i++) { sum = (sum+1)*2; } alert(sum); 使用函数解决例题2 复制代码 function ShuLiang(n)//用来返回第n天的数量 { if(n == 6)//已知第6天 { return 1;//桃子数量为1 } var sl = (ShuLiang(n+1)+1)*2;//第n天的桃子数量=(下一天的桃子数量+1)*2 return sl;//return第n天的数量 } alert(ShuLiang(0)); 复制代码 函数功能:给一个天数,返回该天数的桃子的数量。最主要的是下一天的桃子数量怎么求,函数实现过程是 想要求第1天的桃子数量就需要2天桃子数量; 想要求第2天的桃子数量就需要3天桃子数量; 想要求第3天的桃子数量就需要4天桃子数量; 想要求第4天的桃子数量就需要5天桃子数量; 想要求第5天的桃子数量就需要6天桃子数量; 而第6天的桃子的数量已经知道了,是1。进而5-4-3-2-1-0的数量的桃子就能用公示算出来了。
<script type="text/javascript">
//var attr = [1,8,26,4,15,3,7,42,9];
//对数组元素进行排序
//冒泡排序
/*8 6 4 5 3 7 2 9 1 8
8 6 5 4 7 3 9 2 1 7
8 6 5 7 4 9 3 2 1 6
8 6 7 5 9 4 3 2 1 5
8 7 6 9 5 4 3 2 1 4
8 7 9 6 5 4 3 2 1 3
8 9 7 6 5 4 3 2 1 2
9 8 7 6 5 4 3 2 1 1 */
//两个相邻的元素进行比较,满足条件元素互换
//进行比较的轮数是数组的长度减一
//定义一个交换使用的中间变量
//var zj = 0;
//控制比较的轮数
/*for(var i=0;i<attr.length-1;i++)
{
//控制每轮比较的次数
for(var j=0;j<attr.length-1-i;j++)
{
//如果下一个元素大于当前元素
if(attr[j]<attr[j+1])
{
//互换
zj = attr[j];
attr[j] = attr[j+1];
attr[j+1] = zj;
}
}
}*/
//alert(attr[0]);
//attr.sort();
//alert(attr[3]);
//在数组里面查找数据
var attr = [1,2,3,4,5,6,7,8,9];
//要查找的值
var v = 0;
//循环遍历的方式
/*var sy = -1;
for(var i=0;i<attr.length;i++)
{
if(attr[i]==v)
{
sy = i;
}
}
if(sy == -1)
{
alert("没找到数据");
}
else
{
alert("该数据在数组里面的索引为:"+sy);
}*/
//二分法查找数据
//最小索引
var minsy = 0;
var maxsy = attr.length-1;
var midsy ;
//循环比较
while(true)
{
//计算中间索引
midsy = parseInt((minsy+maxsy)/2);
//比较中间值和用户的值
//判断中间索引的值是否等于用户要查找的值
if(attr[midsy] == v)
{
//如果等于,就退出循环,找到了数据
break;
}
//判断是否只剩下两个数据
if(midsy == minsy)
{
//判断两个数据中的另外一个是否等于用户查找的值
if(attr[midsy+1]==v)
{
//找到了值,退出循环
midsy = midsy+1;
break;
}
else
{
//没有找到值,退出循环
midsy = -1;
break;
}
}
//用来改范围
if(attr[midsy]>v)
{
maxsy = midsy;
}
else
{
minsy = midsy;
}
}
alert(midsy);
</script>