Ciao a tutti!

Come da titolo, mi è stato assegnato da implementare una ricerca binaria utilizzando una funzione ricorsiva. Il programma funziona perfettamente, ma l'output si ripete all'infinito... dove sbaglio?

codice:
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<conio.h>


using namespace std;


void ricercaBinaria(int i, int f, char p[][4], char k[]);


main()
{
    char parola[5][4]={"ada", "ivo", "leo", "ugo", "zoe"}, ricerca[256], ripeti='y';
    int inizio, fine, i, valido;
    
    while(ripeti=='y')
    {
        inizio=0;
        fine=4;
        
        system("cls");
        cout<<"\t\tRICERCA BINARIA\n\n";
        for(i=0;i<5;i++) cout<<i+1<<". "<<parola[i]<<"\n";


        cout<<"\nInserisci la parola da cercare: ";
        cin>>ricerca;
        
        ricercaBinaria(inizio, fine, parola, ricerca);
        
        valido=0;
        
        while(valido!=1)
        {
            system("cls");
            cout<<"\t\tRICERCA BINARIA\n\n";
            cout<<"Vuoi ripetere la ricerca? (y/n): ";
            cin>>ripeti;
            
            if(90>=ripeti && ripeti>=65) ripeti=ripeti+32;
            
            switch(ripeti)
            {
                case 'y':valido=1;
                break;
                case 'n':valido=1;
                break;
                default:cout<<"\nScelta non valida. Premere un tasto per continuare . . . ";
                getch();
            }
        }
    }
    
    cout<<"\nProgramma terminato. ";
    
    system("pause");
}


void ricercaBinaria(int i, int f, char p[][4], char k[])
{
        int c;
        
        while(i<=f)
        {                        
            c=(i+f)/2;
            
            if(strcmp(p[c], k) == 0)
            {
                i=f+2;
                cout<<"\nParola trovata nella posizione "<<c+1<<".";
                cout<<"\n\nPremere un tasto per continuare . . . ";
                getch();
                return;
            }
            
            if(strcmp(p[c], k) < 0) ricercaBinaria(c+1, f, p, k);
            else ricercaBinaria(i, c-1, p, k);
        }
        
        if(i==f+1)
        {            
            cout<<"\nParola non trovata. Premere un tasto per continuare . . . ";
            getch();
            return;
        }
}