Каково ваше желаемое функциональное поведение этого метода? Код не имеет смысла. Вы передаете параметр, но полностью игнорируете его значения. Вы перебрать один массив, но доступ к другим - если оба массива имеют одинаковую длину и т.д. Если все это было правильно, следующий код будет избежать ошибки компилятора и работать гладко:
static byte[] Recursivite(byte[] n)
{
byte[] n = new byte[4] { 0, 0, 0, 0 };
byte[] myArray = new byte[4] {0, 0, 0, 0};
for (int i = 0; i < myArray.Length; ++i)
{
if (n[i] == 0x01)
myArray[i] = 0x01;
else
myArray[i] = recursivite(null); // parameter are not needed anyway
}
return myArray;
}
Теперь позвольте мне упростить, что : Параметр избыточен, поэтому удалите его. Кроме того, n[i]
всегда 0, то if
оператор в цикле не имеет смысла, следовательно, вы можете удалить «если» заявление и, следовательно, объявление/определение n
:
static byte[] Recursivite()
{
byte[] myArray = new byte[4] {0, 0, 0, 0};
for (int i = 0; i < myArray.Length; ++i)
{
myArray[i] = recursivite();
}
return myArray;
}
Если посмотреть в петлю, вы увидите, что вы вызываете бесконечный рекурсивный вызов. Другими словами: решение проблемы компилятора не поможет, потому что остальная часть метода не работает в первую очередь.
И вы подумали, что это лучшее место, где можно запросить ошибки во время компиляции? – EZI