有人可以向我解释为什么它会抛出 ArgumentOutOfRangeException 吗?
Can someone explain me why it throws an ArgumentOutOfRangeException?
static List<object> JosephusPermutation(List<object> items, int k)
{
List<object> solution = new List<object>();
int index = k - 1;
int len = items.Count;
int count = 1;
foreach(object i in items){
if(index<len){
solution.Add(items[index]);
index += k;
}
else{
index = (index - 1) - len * count;
count++;
}
}
return solution;
}
我试图创建一个函数,它获取数组中的每个 k 元素并得到一个 OutOfRangeException,但不知道为什么会这样。你能解释一下为什么这些代码会这样吗?感谢您的帮助!
这一行是原因:
index = (index - 1) - len * count;
一旦 count
> 1,您将减去一个大于列表长度的数字,从而导致负索引。删除 * count
应该可以解决这个问题。
static List<object> JosephusPermutation(List<object> items, int k)
{
List<object> solution = new List<object>();
int index = k - 1;
int len = items.Count;
int count = 1;
foreach(object i in items){
if(index<len){
solution.Add(items[index]);
index += k;
}
else{
index = (index - 1) - len * count;
count++;
}
}
return solution;
}
我试图创建一个函数,它获取数组中的每个 k 元素并得到一个 OutOfRangeException,但不知道为什么会这样。你能解释一下为什么这些代码会这样吗?感谢您的帮助!
这一行是原因:
index = (index - 1) - len * count;
一旦 count
> 1,您将减去一个大于列表长度的数字,从而导致负索引。删除 * count
应该可以解决这个问题。