一个报数游戏js版(约瑟夫环问题)

 更新时间:2010年08月05日 13:48:55   作者:  
随便给一个数 比如100,那么从1到100围成一个圆圈,然后就类似123123报数一样逢3就舍掉,一直这样轮询 那么最后剩下来的那个数是多少?
这个也算是老题目了,园子里边也曾针对此题有过激烈的讨论,那时候追求用oo来解决。如今既然又有人提了出来,我便抽了点时间写了写自己的想法:
复制代码 代码如下:

<script type="text/javascript">
var a_game = function(pNum){
var players = [];
for(var i=1;i<=pNum;i++){
players.push(i);
}
var flag=0;
while(players.length>1){
var outPlayerNum = 0,len=players.length;
for(var i=0;i<len;i++){
flag++;
if(flag==3){
flag=0;
document.writeln("出局:"+players[i-outPlayerNum]);
players.splice(i-outPlayerNum,1);
outPlayerNum++;
}
}
}
return players[0];
};
document.writeln("<br/>剩下:"+a_game(100));
</script>

结果如下:
复制代码 代码如下:

出局:3 出局:6 出局:9 出局:12 出局:15 出局:18 出局:21 出局:24 出局:27 出局:30 出局:33 出局:36 出局:39 出局:42 出局:45 出局:48 出局:51 出局:54 出局:57 出局:60 出局:63 出局:66 出局:69 出局:72 出局:75 出局:78 出局:81 出局:84 出局:87 出局:90 出局:93 出局:96 出局:99 出局:2 出局:7 出局:11 出局:16 出局:20 出局:25 出局:29 出局:34 出局:38 出局:43 出局:47 出局:52 出局:56 出局:61 出局:65 出局:70 出局:74 出局:79 出局:83 出局:88 出局:92 出局:97 出局:1 出局:8 出局:14 出局:22 出局:28 出局:35 出局:41 出局:49 出局:55 出局:62 出局:68 出局:76 出局:82 出局:89 出局:95 出局:4 出局:13 出局:23 出局:32 出局:44 出局:53 出局:64 出局:73 出局:85 出局:94 出局:5 出局:19 出局:37 出局:50 出局:67 出局:80 出局:98 出局:17 出局:40 出局:59 出局:86 出局:10 出局:46 出局:77 出局:26 出局:71 出局:31 出局:100 出局:58
剩下:91

相关文章

  • Javascript表单验证要注意的事项

    Javascript表单验证要注意的事项

    JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。被 JavaScript 验证的这些典型的表单数据有:用户是否已填写表单中的必填项目?用户输入的邮件地址是否合法?用户是否已输入合法的日期?用户是否在数据域 (numeric field) 中输入了文本?
    2014-09-09
  • 从理论角度讨论JavaScript闭包

    从理论角度讨论JavaScript闭包

    本文将介绍一个在JavaScript经常会拿来讨论的话题 —— 闭包(closure)。 闭包其实已经是个老生常谈的话题了; 有大量文章都介绍过闭包的内容, 尽管如此,这里还是要试着从理论角度来讨论下闭包, 看看ECMAScript中的闭包内部究竟是如何工作的
    2019-04-04
  • javaScript同意等待代码实现心得

    javaScript同意等待代码实现心得

    javaScript功能描述:本程序实现在同意某某协议页面对同意按钮进行十秒钟的禁用,同时在按钮的Value显示倒计时。
    2011-01-01
  • js实现简易聊天对话框

    js实现简易聊天对话框

    这篇文章主要为大家详细介绍了js实现简易聊天对话框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • javascript实现在某个元素上阻止鼠标右键事件的方法和实例

    javascript实现在某个元素上阻止鼠标右键事件的方法和实例

    这篇文章主要介绍了javascript实现在某个元素上阻止鼠标右键事件的方法和实例,需要的朋友可以参考下
    2014-08-08
  • 基于casperjs和resemble.js实现一个像素对比服务详解

    基于casperjs和resemble.js实现一个像素对比服务详解

    这篇文章主要给大家介绍了关于基于casperjs和resemble.js实现一个像素对比服务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • 常用的JavaScript模板引擎介绍

    常用的JavaScript模板引擎介绍

    这篇文章主要介绍了常用的JavaScript模板引擎介绍,本文介绍了8款常用JavaScript 模板引擎,着重讲解了artTemplate模板引擎,需要的朋友可以参考下
    2015-02-02
  • Webpack5正式发布,有哪些新特性

    Webpack5正式发布,有哪些新特性

    这篇文章主要介绍了Webpack5正式发布,有哪些新特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 原生js实现简单的链式操作

    原生js实现简单的链式操作

    这篇文章主要介绍了原生js实现简单的链式操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • javascript字体颜色控件的开发 JS实现字体控制

    javascript字体颜色控件的开发 JS实现字体控制

    小编给大家带来一个用javascript编写的能控制字体大小个颜色等基本信息的控件写法,喜欢的尝试编写一下。
    2017-11-11

最新评论