En ce qui concerne la fonction demandée dans cette question, il y a moyen de la réaliser de manière récursive en passant l’indice de départ et l’indice d’arrivée à cette fonction et en faisant appel à la fonction précédente qui teste l’existence après l’avoir modifiée pour accepter un nouveau paramètre servant à l’initialisation de l’indice i.
Sinon, il y a plus simple pour la réaliser. En réalité, cette fonction est aussi simple que la précédente, voyez par vous-même:
/** * Compter le nombre d'occurrences d'une valeur donnée val dans un tableau trié (en ordre croissant) de n entiers. * @param val * @param tab * @param n * @returns nombre d'occurrences */ int nombre_occurrences( int const val, int const tab[], int const n) { int i = 0, nb_occurrences = 0; while ( n - 1 > i && val >= tab[i] ) { if( tab[i] == val ) { nb_occurrences++; } i++; } if( tab[i] == val ) { nb_occurrences++; } return nb_occurrences; }