/// <summary> 
/// 直接调用这个方法,传入2个参数 
/// </summary> 
/// <param name="numberPerson">猴子的个数</param> 
/// <param name="unluckyNumber">那个不幸的数字,也就是报到那个数字就要出局的</param> 
/// <returns></returns> 
private static int Play(int numberPerson, int unluckyNumber) 
{ 
int i = 0; // 循环变量,作为数组的索引 
int currentNumber = 0; // 报数计数 
int numberRemain = numberPerson; // 剩下的人数 
int numberWin = 0; // 赢的人的编号 
// 声明数组,存放每个人的状态 
bool[] personState = new bool[numberPerson]; 
// 游戏开始,每个人的状态都为true 
for (i = 0; i < personState.Length; i++) 
{ 
personState[i] = true; 
} 
// 开始游戏 
while (numberRemain > 1) 
{ 
for (i = 0; i < personState.Length; i++) 
{ 
if (personState[i] == true) // 状态为true,报数 
{ 
currentNumber++; // 报出的数字 
if (currentNumber % unluckyNumber == 0) 
{ 
personState[i] = false; // 报到幸运数字的倍数人退出 
numberRemain--; // 退出的人数累加1 
} 
} 
} 
} 
// 找到唯一一个没有退出的人,状态为true 
for (i = 0; i < personState.Length; i++) 
{ 
if (personState[i]) 
{ 
numberWin = i + 1; 
break; 
} 
} 
return numberWin; 
}