Można oglądać nie zepsuje się zabawy, bo to, i tak rozwiązanie nie zgodne z teścia zadania.
#include <iostream>
using namespace std;
void rek(int m,bool p,int i=0) {
int n=0;
if(m<0) n=-1*m;
else if(m>0) n=m;
else return;
///******************************************
if (i==n)
return;
if (p) {
string s1(i,'.');
string s2(n-i,'*');
string s3(n-i-1,'.');
string s4(i+1,'*');
if(m>0) cout<<s1<<s2<<s3<<s4<<endl;
else cout<<s4<<s3<<s2<<s1<<endl;
i++;
}
else {
string s1(n-i,'*');
string s2(i,'.');
string s3(i+1,'*');
string s4(n-(i+1),'.');
if(m>0) cout<<s1<<s2<<s3<<s4<<endl;
else cout<<s4<<s3<<s2<<s1<<endl;
i++;
}
rek(m,p,i);
}
int main() {
int n=0;
while (cin>>n){
rek(n,1);
rek(n,0);
cout<<'\n';
}
return 0;
}
Natomiast problem mam inny, chciałem zwrócić vector<string> moja_funkcja_rekurencyjna(){} i nie bardzo mam pomysł jak to zrobić. Zdefiniowałem nawet vector<string> globalny{}, i w funkcji próbowałem globalny.push_back(mojstring) i nie wiele to dało.
Bo miałem fantazje do jednej części skrzydełka napisać rekurencję.Byłoby o wiele ładniej. A rekurencję muszę poćwiczyć bo ni w ząb jej nie kumam(podstawowa teoria tak - ale z praktyką ciężko )