请高手解决猴子选大王问题
M只猴子选大王M只猴子选大王,方法:所有猴子按1……M编号围成一圈,从第一个开始按顺序1,2,3报数,报到3的退出,如此循环,直到最后一只,那只就是猴王。
<script> //假设7个猴子围成一圈.将7个猴子存储在一个数组中 var arr=new Array(7); arr[0]=1; arr[1]=2; arr[2]=3; arr[3]=4; arr[4]=5; arr[5]=6; arr[6]=7; //数组最大下标 var arrlen=arr.length-1; //检测数组是否还剩一个不为0的元素值,0表示该猴子已退出 function remainOne() { var count=0; for(i=0;i<arr.length;i++) { if(arr[i]!=0) { count++; } } if(count==1) { return false; }else{ return true; } } var k=0; var m=0; //m为数组的动态下标 //不断循环数猴子一直数到剩下一个为止 while(remainOne()) { if(arr[m]!=0) { ++k; } //当k=3时表示数到第三只猴子,则该猴子退出 if(k==3) { //将k重置为0,重新开始数 k=0; //该位置的猴子退出 arr[m]=0; } m++; //如果m超出了最大的数组下标,则从最小下标重新开始 if(m>arrlen) { m=0; } } for(i=0;i<arr.length;i++) { if(arr[i]!=0) { alert("猴王是:"+arr[i]); } } </script>