Problem: 1 In diesem Code, wenn ich eine Nummer suchen, die nicht in Array ist, sollte es Value not found
anzeigen, aber ich weiß nicht, es zeigt nicht diese Nachricht stattdessen jedes Mal zeigt es Found value in element -5
ich nicht habe eine Ahnung, warum es passiert.Rekursive lineare Suche in 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);
}
Problem: 2
kann ich nicht verstanden, wie
size_t linearSearch (const int array [], int key, size_t size)
Funktion speziell Arbeits diese Linie
if(key == array[size-1]){
return size-1;
return linearSearch(array, key, size-1);
'if (size <0)' ist dumm für einen vorzeichenlosen Wert –
Sieht aus wie ein gutes Beispiel, um einen Debugger mit zu lernen. Verwenden Sie den Debugger. Es kann Ihnen Werte von Variablen zeigen, während Sie jede Anweisung durchlaufen. –
schlagen Sie mir vor, was ich anstelle von schreiben sollte, wenn (Größe <0) – Claudia