C#语言集合使用常见问题(一)

我们在VS编程中中使用集合的时候,经常会遇到程序提示:索引超出范围,必须为非负值或小于集合大小

例如下面的求斐波那契数列的代码:

Console.Write("请输入数列的长度:");
int input = int.Parse( Console.ReadLine());
List<int> num = new List<int> { 1,1};
for (int i = 2; i < input; i++)
{

num[i] = num[i - 1] + num[i - 2];
num.Add(num[i]);
}

以上代码在调试的时候怎么都过不了,

num[i] = num[i - 1] + num[i - 2];

上面这句代码一直报错,乍一看逻辑并没有什么问题,就是将集合i-1项和i-2项的和赋值给集合第i项

后来经过多次尝试,终于发现了问题所在,当n=2的时候,该代码的的结果为num[2]=num[0]+num[1];

num[2]就是集合中的第三项,可是在定义集合的时候只写了两个数字,集合目前只有两项,不存在num[2],所以索引超出了范围。

只要多定义一个int变量来代表num[i]就可以了,以上代码可以改为:

Console.Write("请输入数列的长度:");
int input = int.Parse( Console.ReadLine());
List<int> num = new List<int> { 1,1};

int n;
for (int i = 2; i < input; i++)
{

n = num[i - 1] + num[i - 2];
num.Add(n);
}

猜你喜欢

转载自www.cnblogs.com/lecurs/p/9163716.html