Wypisanie wariacji z powtórzeniami dla określonej długości

0

Witam,
Chciałem napisać program, w którym dla podanej przez użytkownika długości i wyboru znaków z jakich miałby się taki wyraz składać, wypisze wszystkie możliwe kombinacje.
Z racji tego, że dopiero zaczynam ustaliłem alfabet na ab oraz długość na dwa. Czyli program powinien machnąć mi na ekranie:
aa
ab
ba
bb

skleciłem taki kod:

#include <iostream>  
#include <sstream>
using namespace std;
void Gen(string haslo, const int size, string alfabet);

int main()
{
	string alfabet = "ab";
	string haslo = "";
	const int size = 2;
	Gen(haslo,size,alfabet);
	system("pause");
	return 0;
}
void Gen(string haslo, const int size,string alfabet)
{
	if (haslo.length() == size)
	{
		cout << haslo << endl;
	}
	else
	{
		for (int i = 0; i < alfabet.length(); i++)
		{
			haslo += alfabet[i];
			Gen(haslo, size, alfabet);
		}
	}

}
 

ale zdaje się produkować w nieskończoność aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Pytanie, jakiego i gdzie zrobić ifa, żeby w odpowiednim momencie zmieniał a na b i działał tylko do mojego size?
I czy w ogóle to co napisałem ma sens.
Bo wszystko super machnie mi aa, następnie doda b, a później jedzie już tylko w nieskończoność dowalając same a. Zupełnie nie działa na size.
Pzdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1