C# System.IndexOutOfRangeException总和0
很抱歉问这个简单的问题,但我是初学者。 我试图找到那些和为0的子集,这些数字在一个数组中 我的subset.Length有什么问题。我已经对它进行了调试,我认为逻辑是好的。但是每次都有一个takeC# System.IndexOutOfRangeException总和0,c#,C#,很抱歉问这个简单的问题,但我是初学者。 我试图找到那些和为0的子集,这些数字在一个数组中 我的subset.Length有什么问题。我已经对它进行了调试,我认为逻辑是好的。但是每次都有一个takeSystem.IndexOutOfRangeException。我尝试了subset.Length-1。结果没有改变 异常在if(子集[m]==0)语句的行中给出 谢谢 int[] subset={-3,-2,1,1,8} // the sum of -2, 1 and 1 is 0 for (in
System.IndexOutOfRangeException
。我尝试了subset.Length-1
。结果没有改变
异常在if(子集[m]==0)
语句的行中给出
谢谢
int[] subset={-3,-2,1,1,8} // the sum of -2, 1 and 1 is 0
for (int i = 0; i < subset.Length; i++)
{
for (int j = 0; i < subset.Length; j++)
{
for (int k = 0; i < subset.Length; k++)
{
for (int l = 0; i < subset.Length; l++)
{
for (int m = 0; i < subset.Length; m++)
{
if (subset[m] == 0)
{
Console.WriteLine("The subset of sum of zero:{0}", subset[m]);
}
if (subset[l] + subset[m] == 0)
{
Console.WriteLine("The subset of sum of zero:{0},{1}", subset[m], subset[l]);
}
if (subset[l] + subset[m] + subset[k] == 0)
{
Console.WriteLine("The subset of sum of zero:{0},{1},{2}", subset[m], subset[l], subset[k]);
}
if (subset[l] + subset[m] + subset[k] + subset[j] == 0)
{
Console.WriteLine("The subset of sum of zero:{0},{1},{2}", subset[m], subset[l], subset[k], subset[j]);
}
if (subset[l] + subset[m] + subset[k] + subset[j] + subset[i] == 0)
{
Console.WriteLine("The subset of sum of zero:{0},{1},{2},{3}", subset[m], subset[l], subset[k], subset[j], subset[i]);
}
int[]subset={-3,-2,1,1,8}//2,1和1的和是0
for(int i=0;i
注意循环的条件:它始终是i
。但您应该与相应的循环变量进行比较:j、k、l或m(复制粘贴错误?)
在您的代码中,j/k/l/m的for循环是无限的,因为当这些循环迭代时,i将永远不会增加…您的for循环终止条件始终是
i
,将其更改为相关的迭代变量,即for(int m=0;m
for(int j=0;j
以下是逻辑错误:
for (int i = 0; i < subset.Length; i++)
{
for (int j = 0; i < subset.Length; j++)
{
for (int k = 0; i < subset.Length; k++)
{
for (int l = 0; i < subset.Length; l++)
{
for (int m = 0; i < subset.Length; m++)
for(int i=0;i
应该是:
for (int i = 0; i < subset.Length; i++)
{
for (int j = 0; j < subset.Length; j++)
{
for (int k = 0; k < subset.Length; k++)
{
for (int l = 0; l < subset.Length; l++)
{
for (int m = 0; m < subset.Length; m++)
for(int i=0;i
oops,菜鸟错误:)我错过了那个简单的规则。对不起,那是我的错。谢谢你的关注。
for (int i = 0; i < subset.Length; i++)
{
for (int j = 0; j < subset.Length; j++)
{
for (int k = 0; k < subset.Length; k++)
{
for (int l = 0; l < subset.Length; l++)
{
for (int m = 0; m < subset.Length; m++)