class YueSeFu
{
public static int circleRun(int person , int num)
{
int array[] = new int[person];
int flag = 0;
int person_flag=0;
//—————–初始化数组——————–
for (int i = 0; i < person ; i++ )
{
array[i] = i+1;
}
//—————-执行约瑟夫环规则———————
while(person>1)
{
for (int i = 1; i <= num ; i++, flag++ )
{
if (flag == array.length)
{
flag = 0;
}
while(array[flag]==0)
{
flag++;
if (flag == array.length)
{
flag = 0;
}
}
if (i==num )
{
array[flag] = 0;
person–;
}
}
}
//—————-遍历数组,不为零则返回——————–
for (int i = 0; i<array.length ; i++ )
{
if (array[i]!=0 )
{
person_flag = array[i];
}
}
return person_flag
}
public static void main(String[] args)
{
System.out.println(“最后一个人的编号为:”+ circleRun(14,3));
System.out.println(“最后一个人的编号为:”+ circleRun(11,3));
System.out.println(“最后一个人的编号为:”+ circleRun(2,3));
System.out.println(“最后一个人的编号为:”+ circleRun(2,2));
System.out.println(“最后一个人的编号为:”+ circleRun(3,3));
}
}
运行结果如下: