문제 : 1 이 코드에서는 배열에없는 숫자를 검색하면 Value not found
이 표시되지만 표시 될 때마다 대신 해당 메시지가 표시되지 않습니다. Found value in element -5
그렇지 않습니다. 그것이 일어나는 이유를 전혀 모른다.C에서 재귀 선형 검색
#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
방법
linearSearch (CONST의 int 배열 [], INT 키를 size_t 크기)
함수 특별히 작업 size_t가 이 라인
if(key == array[size-1]){
return size-1;
return linearSearch(array, key, size-1);
부호없는 값인 경우 (크기 <0)'바보입니다. –
디버거를 배우는 좋은 예입니다. 디버거를 사용하십시오. 각 명령을 단계별로 진행하면서 변수 값을 표시 할 수 있습니다. –
나를 제안합니다. 대신에 무엇을 써야합니까 (크기 <0) – Claudia