Возвращение значения из метода C#
Выдает ошибку "не все пути к коду возвращают значение"
int[] quicksortfaster(int[] list,int piv)
{
int j = 0;
for (int i = 0; i < piv; i++)
{
if (list[i] > list[piv]) i += 1;
else
{
int w = list[i];
list[i] = list[j];
list[j] = w;
j += 1;
}
}
int k = list[j];
list[j] = list[piv];
list[piv] = k;
if (j == 0 ) return list;
else if (j == piv)
{
return quicksortfaster(list,piv - 1);
}
else if (j == piv - 1)
{
return quicksortfaster( list, piv - 1);
}
else if (j > 0)
{
return quicksortfaster(list, piv);
}
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
else if (j > 0)
{
return quicksortfaster(list, piv);
}
// вот тут ничего не возвращается!!
}
Поскольку я так понимаю j не может быть отрицательное, а остальные все варианты, включая 0, уже проверены раньше, тут просто нужно убрать излишнюю проверку:
return quicksortfaster(list, piv);
}
Вот теперь ваша функция всегда что-нибудь возвращает.
Управление и раньше не попадало у вас в то место, которое смущает компилятор, но на то он и компилятор, что заранее он не может наверняка знать, какие у вас будут значения переменных при выполнении программы. Поэтому он требует, чтобы функция возвращала значение при любых вариантах ветвления, даже невозможных фактически в вашем случае (но возможных теоретически).