ho abbozzato questo, guarda se può fare il caso tuo
codice:
/*
Testo :
Scrivere un algoritmo ricorsivo che assegnati due array S1 e S2 
restituisca TRUE se il secondo è contentuto tutto nel primo, 
FALSE in caso contrario.
*/


#include<cstdlib>
#include<iostream>

using namespace std;


bool controllo(char * S1, char * S2) {
	
	if (!*S1)
		return true;
	else {
		// cerca la prima occorrenza della prima lettera di S1
		while (*S2 && *S1 != *S2) S2++;
		if (!*S2) return false;	// non trovata, allora esci
		else return controllo(++S1, ++S2);
	}
}

int main(){

    char S1[25];  
    char S2[25];  
    
    cout<<"Inserisci la prima parola : ";
    cin.getline(S1,25);

    cout<<"Inserisci la seconda parola : ";
    cin.getline(S2,25);
    
    if (!controllo(S1, S2))
             cout<<"La prima parola non può essere contenuta nella seconda" << endl;
    else
             cout<<"La prima parola è contenuta nella seconda" << endl;
}
attenzione!! ho invertito i due array (il primo l'ho trasformato nel secondo e viceversa

ciao