之前这论坛上看到的就是下面这个方法
<script>
var n = parseInt(prompt("请输入n","8"), 10);
var m = parseInt(prompt("请输入m","3"), 10);
var arr = [];
for (var i = 1; i <= n; i++) {
arr.push(i);
}
var p = 0;
for (var i = 1; i < n; i++) {
p = (p+m-1)%arr.length;
var d = arr[p];
arr.splice(p,1);
document.write("第",i,"轮取出",d,",剩余:",arr,"<br>");
}
</script>
有没有哪位大佬能不用parselnt而用push 或shift 以及其他的标签来实现这个题目的。谢谢!!!
6 个解决方案
#2
6不用parseInt(),改成 -0 或者 *1 也行。
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
移除数组元素应该用splice(),而shift()只是移除第一个元素在这个题目中并不适用。
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
移除数组元素应该用splice(),而shift()只是移除第一个元素在这个题目中并不适用。
#3
换一种解法。这个应该是楼主要求的
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
var arr = [];
for (var i = 1; i <= n; i++) {
arr.push(i);
}
var p = 0;
while (arr.length>1) {
var d = arr.shift();
p++;
document.write("第",p,"次,数到",d);
if (p%m==0)
document.write("并将其取出,剩余:",arr);
else
arr.push(d);
document.write("<br>");
}
document.write("最后剩余:",arr[0]);
#4
但是-0的作用是什么 啊
#5
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>从数组中筛选比赛号码</title>
<style>
</style>
</head>
<body>
<input type="number" id="count" placeholder="请输入球的个数" value="8">
<input type="number" id="step" placeholder="请输入提取间隔数" value="3">
<button>查找号码</button>
<div id="result"></div>
<script>
document.getElementsByTagName('button')[0].onclick = function(){
var count = document.getElementById('count').value * 1;
var step = document.getElementById('step').value * 1;
if(count && step){
var array = [];
for(var i = 1; i <= count ; i ++)array.push(i);
var index = 0,result = [];
while(array.length > 1){
var first = array.shift();
index ++;
result.push(`<p>第${p}次,数到${first}`);
if (index % step == 0)
result.push(`,并将其取出,剩余:${array.toString()}`);
else
array.push(first);
result.push('</p>');
}
document.getElementById('result').innerHTML = result.join('');
}
}
</script>
</body>
</html>
#6
呀,三楼已经有答案了,就以三楼的吧。
#1
#2
6不用parseInt(),改成 -0 或者 *1 也行。
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
移除数组元素应该用splice(),而shift()只是移除第一个元素在这个题目中并不适用。
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
移除数组元素应该用splice(),而shift()只是移除第一个元素在这个题目中并不适用。
#3
换一种解法。这个应该是楼主要求的
var n = prompt("请输入n","8")-0;
var m = prompt("请输入m","3")-0;
var arr = [];
for (var i = 1; i <= n; i++) {
arr.push(i);
}
var p = 0;
while (arr.length>1) {
var d = arr.shift();
p++;
document.write("第",p,"次,数到",d);
if (p%m==0)
document.write("并将其取出,剩余:",arr);
else
arr.push(d);
document.write("<br>");
}
document.write("最后剩余:",arr[0]);
#4
但是-0的作用是什么 啊
#5
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>从数组中筛选比赛号码</title>
<style>
</style>
</head>
<body>
<input type="number" id="count" placeholder="请输入球的个数" value="8">
<input type="number" id="step" placeholder="请输入提取间隔数" value="3">
<button>查找号码</button>
<div id="result"></div>
<script>
document.getElementsByTagName('button')[0].onclick = function(){
var count = document.getElementById('count').value * 1;
var step = document.getElementById('step').value * 1;
if(count && step){
var array = [];
for(var i = 1; i <= count ; i ++)array.push(i);
var index = 0,result = [];
while(array.length > 1){
var first = array.shift();
index ++;
result.push(`<p>第${p}次,数到${first}`);
if (index % step == 0)
result.push(`,并将其取出,剩余:${array.toString()}`);
else
array.push(first);
result.push('</p>');
}
document.getElementById('result').innerHTML = result.join('');
}
}
</script>
</body>
</html>
#6
呀,三楼已经有答案了,就以三楼的吧。