Проблема: 1 В этом коде, если я ищу номер, который не находится в массиве, он должен отображать Value not found
, но я не знаю, что он не отображает это сообщение, а каждый раз, когда он показывает Found value in element -5
Я не есть подсказки, почему это происходит.Рекурсивный линейный поиск в C debug
#include<stdio.h>
#define SIZE 100
size_t linearSearch(const int array[], int key, size_t size);
int main(void)
{
int a[SIZE];
size_t x;
int searchKey;
size_t element;
for(x=0; x<SIZE; ++x){
a[x] = 2*x;
}
for(x=0; x<SIZE; ++x){
if(x%10 == 0){
puts("");
}
printf("%5d", a[x]);
}
puts("\n\nEnter integer search key:");
scanf("%d", &searchKey);
// attempt to locate searchKey in array a
element = linearSearch(a, searchKey, SIZE);
// display results
if(element != -1){
printf("Found value in element %d", element);
}
else{
puts("Value not found");
}
}
size_t linearSearch(const int array[], int key, size_t size)
{
if(size<0){
return -1;
}
if(key == array[size-1]){
return size-1;
}
return linearSearch(array, key, size-1);
}
Проблема: 2
Я не могу понять, как
size_t linearSearch (Const целочисленный массив [], Int ключ, size_t размера)
функция работает специально эти строки
if(key == array[size-1]){
return size-1;
return linearSearch(array, key, size-1);
'if (размер <0)' глупо для значения без знака –
Похож на хороший пример для изучения отладчика. Используйте отладчик. Он может показывать значения переменных при прохождении каждой инструкции. –
подскажите мне, что я должен писать вместо if (size <0) – Claudia