Pesquisa linear. Modifique o programa da Figura 6.18 para que seja possível usar uma função linearSearch recursiva na realização da pesquisa linear do array. A função deverá receber um array de inteiros e o tamanho do array como argumentos. Se a chave de pesquisa for encontrada, retorne o subscrito do array; caso contrário, retorne –1.
Passo 1
Opaa, tudo bom?
Prontos pra mais um programa?
Inicialmente, colocamos nossa biblioteca padrão em C e já definimos o valor da variável SIZE, que nos ajudará a definir o tamanho de nosso array. Em seguida, já colocamos o protótipo da função linearSearch com seus respectivos parâmetros formais.

Após isso vamos para o main, logo de início já definimos quais serão as variáveis usadas no nosso programa e de que tipo elas são. Desse modo temos, a variável searchKey que recebe qual valor deve ser procurado no array, a variável element que guardará a posição em que o número a ser pesquisado se encontra. E além disso, temos também a inicialização do nosso array.
Passo 2
Ainda no main, perguntamos ao usuário que número ele gostaria de verificar se está no nosso array, e guardamos esse número na variável searchKey como já havíamos mencionado. Em seguida, a variável element fica responsável por guardar o retorno da nossa função linearSearch. E depois, utilizamos os operadores condicionais if/else para exibir mensagens ao usuário de acordo com o valor de element, caso seja -1 será exibido a mensagem que o valor não foi encontrado, porém se for diferente de -1 será impresso a posição onde ele se encontra.
Tudo certinho até aqui?

Passo 3
Seguimos para a função linearSearch, cujos parâmetros são o nosso array, a chave a ser pesquisada e o tamanho do nosso vetor. Dentro da função comparamos se a última posição é a nossa chave, caso não seja então fazemos a chamada novamente da mesma função, por isso é uma função recursiva. A cada chamada o tamanho tem que sofrer um decréscimo para que cada elemento do array seja comparado com a nossa chave. E por fim, se o valor for encontrado, esse é retornado para o main, caso contrário é retornado o -1.

E foi pessoal, espero que tenha sido proveitoso. Bons Estudos! :)
Resposta
#include
#define SIZE 10
int linearSearch( int b[],int key,int size); /* protótipo de função */
int main(void) /* Função main inicia a execução do programa */
{
int searchKey; /* valor para localizar no array*/
int element; /* Variável para manter no local de searchKey ou -1 */
int a[SIZE] = { 8, 3, 1, 2, 6, 0, 9, 7, 4, 5 }; /* Inicializa o a */
printf("Digite chave de pesquisa de inteiro:\n");
scanf("%d", &searchKey);
/* Tenta localizar searchKey no array a */
element = linearSearch(a, searchKey, SIZE);
/* Exibe resultados */
if(element != -1){
printf("Valor encontrado no elemento %d\n", element);
} /* Fim do if */
else{
printf("Valor não encontrado\n");
} /* Fim do else */
return 0; /* Indica conclusão bem-sucedida */
} /* Fim do main */
/* Função que realiza a pesquisa linear do array */
int linearSearch( int b[],int key,int size)
{
if(b[size] == key){
return size;
} /* Fim do if */
if(b[size]!= key && size >= 0){
int r = linearSearch( b, key, size - 1);
return r;
}
} /* Fim da função linearSearch */