[c] Algoritmo in maniera DI

di il
2 risposte

[c] Algoritmo in maniera DI

Salve ragazzi sto per affrontare un esame all'uni dove più che altro mi viene chiesto di scrivere algoritmi in pseudolinguaggio. Mi è stato chiesto di scrivere un algoritmo con il metodo ricorsivo Divide Et Impera, dove mi veniva dato un array di interi continuo (cioè con il primo estremo negativo e l'altro positivo, e la somma dell'elemento corrente e quello successivo deve essere di 1, quindi per farla breve un array di interi in ordine crescente) e dovevo ricercare l'indice dell'elemento uguale a 0.

Io l'ho scritto in questo modo, ma non ricordo bene praticamente il metodo D&I e volevo chiedere se fosse giusto così:

#include <stdio.h>
#include <stdlib.h>

int ricerca (int a[], int primo, int ultimo);

int main(){
int array[5] = {-2, -1, 0, 1, 2};
int k;
k = ricerca(array, 0, 4);
printf("%d", k);
return 0;
}

int ricerca (int a[], int primo, int ultimo)
{
    int m;
    m = primo+ultimo/2;
    if(primo == ultimo)
    {
        if(a[primo] == 0)
        {
            return m;
        }
    } else
    {
        if(a[m] >=0)
        {
            return ricerca (a, primo, m);
        } else
        {
            return ricerca (a, m+1, ultimo);
        }
    }
    return -1;
}
Sembra funzionare volevo sapere solo se ho applicato tutto correttamente ed ho rispettato ciò che mi è stato chiesto.
Ringrazio anticipatamente

PS. Dimenticavo per verificare se fosse giusto l'ho scritto in C, linguaggio a me più comodo

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte