Podziel sobie zadania na dwie funkcje. Jedną rysującą linie, a drugą z niej korzystającą. Skupię się na tej pierwszej, bo drugą można zrobić bardzo podobnie.
Funkcja rysująca linie niech będzie mieć jeden parametr np length. W ciele wypisuj '*' raz, dekrementuj length i jeżeli length będzie różne od 0 wywołaj rekurencyjnie całą funkcję ze zmienioną wartością length. Dla else (czyli przy ostatnim rekurencyjnym wywołaniu) można wysłać znak nowej linii. Dalej powinieneś sobie poradzić.
PS. Do rysowania linii można też wykorzystać pewną własność std::string (będzie krócej i łatwiej), ale polecam zrobić oba sposoby. Lepiej zrozumiesz jak działa rekurencja ;)
std::cout << std::string(length, '*') << "\n";