用Javascript实现指针操作的约瑟夫问题

本文介绍了用指针操作实现约瑟夫问题的方法,供大家参考,具体分析如下:

当然,我们必须在实施之前写JS数组的内部指针的一些操作功能,如复位(),(),()的电流下,沪指(),搜索(),最后(),这些功能都是由我们自己,因为JS是不是这些神奇的操作功能。


array.prototype.pointer = 0; / /指针数组内部模拟
重置函数,它替换数组内部指针(指向第一个元素)
VaR复位=功能(arrayobj){
如果(!(arrayobj instanceof Array)){
警报(重置()函数参数类型错误!请检查输入!;
返回;
}
arrayobj.pointer = 0;
}
返回当前元素指向数组的内部指针的当前函数。
无功电流=功能(arrayobj){
如果(!(arrayobj instanceof Array)){
警报(当前()函数参数类型错误!请检查输入!;
返回;
}
返回arrayobj { arrayobj指针};
}
指向数组最后一个元素的数组内部指针。
var =功能(arrayobj){
如果(!(arrayobj instanceof Array)){
警报()函数参数类型是错误的!请检查输入!;
返回;
}
arrayobj.pointer = arrayobj.length - 1;
返回arrayobj { arrayobj指针};
}
下一个将内部指针数组移动到一个位的函数
如果指向最后一个元素返回false
VaR下=功能(arrayobj){
如果(!(arrayobj instanceof Array)){
警报(下一个()函数参数类型错误!请检查输入!;
返回;
}
arrayobj.pointer + +;
如果(typeof arrayobj { } = = 'undefined arrayobj。指针){
arrayobj.pointer—;
返回false;
}
返回true;
}
/ /预防和控制功能,移动的阵列点的指针
如果您指向第一个元素返回false
变量prev =功能(arrayobj){
如果(!(arrayobj instanceof Array)){
警报(沪指()函数的参数类型是错误的!请检查输入!;
返回;
}
arrayobj.pointer—;
如果(typeof arrayobj { } = = 'undefined arrayobj。指针){
arrayobj.pointer + +;
返回false;
}
返回arrayobj { arrayobj指针};
}
/ /复原功能,删除指定的数组元素
VaR unset =函数(指数,arrayobj){
如果(!(arrayobj instanceof Array)){
警报(撤消()函数的参数类型是错误的!请检查输入!;
返回;
}
如果(typeof arrayobj {指数} = = 'undefined){
警报(撤消()函数的参数指标误差!没有这样的元素!;
返回false;
}
ArrayObj.splice(指数1);
返回true;
}
函数的作用是:通过一个键数组返回一个数组。
搜索功能(VaR值,arrayobj){
如果(!(arrayobj instanceof Array)){
警报()函数参数类型是错误的!请检查输入!;
返回;
}
(指数为arrayobj){
如果(arrayobj {指数} = =值){
收益指数;
}
}
返回false;
}
/ / getkingmonkey功能,我们的约瑟夫主函数,n只猴子,数到m
功能getkingmonkey(n,m){
=新数组();
对于(i = 1;i <;i + +){
{我};
}
一个{ 0 } = 0;取消(0个);复位(一);
而(a.length > 1){
对于(计数器= 1;计数器m;计数器+ +){
如果(下一个(a)){
如果(计数器= m){
设置(搜索(沪指(a),a),a);
}
其他{ }
重置(a);
如果(计数器= m){
设置(搜索(端(一),A),A);
重置(a);
}
}
}
}
返回电流(a);
}
警报(许多国王的猴子:+ getkingmonkey(100, 17));


希望本文能对大家的javascript程序设计有所帮助。