Я написал метод для оценки треугольника Pascal из n строк. Однако, когда я тестирую метод, я получаю сообщение об ошибке «Исключение в потоке» main «java.lang.ArrayIndexOutOfBoundsException: -1». Вот код.Рекурсивный метод для треугольника Паскаля для Java
public static int[] PascalTriangle(int n)
{
int[] pt = new int[n+1];
if(n == 0)
{
pt[0] = 1;
return pt;
}
int[] ppt = PascalTriangle(n-1);
pt[0] = pt[n] = 1;
for(int i = 0; i < ppt.length; i++)
{
pt[i] = ppt[i-1] + ppt[i];
}
return pt;
}
Пожалуйста, дайте мне знать, если у вас есть идеи по редактированию кода для устранения проблемы.
Вот одна идея: не пытайтесь читать 'ppt [-1]'. Это то, что делает ваш код. – ajb
Линия 'pt [i] = ppt [i-1] + ppt [i];' будет равна 'pt [0] = ppt [-1] + ppt [0]' на первой итерации. – syrion
Я бы настоятельно рекомендовал изучить, как использовать отладчик Java (например, встроенный в вашу среду IDE), когда вы получаете такую ошибку, вы можете приостановить выполнение в строке и увидеть неудобные значения. В противном случае вы могли бы просто поместить в свой код инструкции println, чтобы показать значение 'i', которое должно надеяться сделать очевидным, что вы пытаетесь получить доступ к' ppt [-1] ' –