ho guardato il tuo codice e spero di averlo interpretato giustamente. Ci sono molte cose ridondanti e le ho messe a posto, anche se è possibile manchino alcuni controlli.

codice:
#include <iostream>
#include <cstdlib>

bool controlla(char *, char *);

using namespace std;
int main() {

	const int L=50;
	char a[L]="pane pera ago nero elica";
	char app[L];

	bool verifica=true;

	int i=0, j=0;

	while (a[i] != ' ') {

		app[i] = a[i];
		i++;

	}
	app[i] = '\0';
	j=i;

	cout << "Risultato verifica " << controlla(a, app) << endl;
}


bool controlla(char *a, char *app)	{


	if (!*app)
		return true;

	// cerca la prossima parola da analizzare
	while (*a != ' ') a++;
	while (*a == ' ') a++;

	cout << *app << "-" << a << endl;

	if (*a==*app)
			return controlla(a, ++app);
	else 
			return false;

}
spero ti possa essere utile