ты не меняешь положение счётчика. у тебя условие r = arr[n-1] при этом саму n ты не меняешь, т.е. на каждой итерации у тебя r = arr[arr.length - 1], тебе надо менять n и l соответственно :)
while (l < r)
{
if (l + r == s)
{
Console.WriteLine("S = " + l + " " + r);
}
else if (l + r > s)
{
r = arr[n - 1];
//break;
}
else if (l + r < s)
{
l = arr[l + 1];
//break;
}else
Console.WriteLine("Такой суммы нет.");
}
вот там где у тебя стоят брейки, тебе надо не элемент запрашивать на единицу меньше/больше
а менять значение l и n, а потом запрашивать элемент от n или l
ты не меняешь положение счётчика. у тебя условие r = arr[n-1] при этом саму n ты не меняешь, т.е. на каждой итерации у тебя r = arr[arr.length - 1], тебе надо менять n и l соответственно :)
вот там где у тебя стоят брейки, тебе надо не элемент запрашивать на единицу меньше/больше а менять значение l и n, а потом запрашивать элемент от n или l
n--; r = arr[n];