Я пытаюсь проверить, отсортирован ли массив без использования цикла. Он работает нормально, т.е. если у меня есть массив с элементами, которые находятся в порядке возрастания, printf выполняется, так как я получаю «Сортировка». НоФункция в C не возвращает правильное значение
printf("Array 1 returns: %d \n\n", sortCheck(arr1, SORTED1));
возвращает 0? Почему это?
Спасибо. Вот весь код.
#include<stdio.h>
const int SORTED1 = 5;
int sortCheck (int arr[], int arrSize);
int indexCounter = 0;
int main()
{
int arr1[] = {1,2,3,4,5};
printf("Array 1: \n");
printf("Array 1 returns: %d \n\n", sortCheck(arr1, SORTED1));
indexCounter = 0;
return 0;
}
int sortCheck(int arr[], int arrSize)
{
if ((arr[indexCounter]==arr[arrSize-1]) && (indexCounter==arrSize-1))
{
printf("Sorted. \n");
return 1;
}
if (arr[indexCounter] <= arr[indexCounter+1])
{
indexCounter++;
sortCheck(arr, arrSize);
}
else
{
printf("Not sorted.");
return 0;
}
}
Вы * необходимо * либо включить предупреждение от компилятора, или начать платить внимание на них, это сэкономит вам много энергии. Если вы используете GCC, привыкните к компиляции с помощью 'gcc -Wall -Werror'. –