Count no. of binary strings

I tried solving the above program through recursion,
the purpose of this program was to count all possible distinct binary strings of length N such that there are no consecutive 1’s.
I got TLE error and tried to reslove but was not able to.

here is my code:

#include <bits/stdc++.h>
#define ll long long int
using namespace std;
unordered_map<ll,string>map1;
ll key=0;
void ones(ll n, string osf) {
if(n==0) {
map1[key]=osf;
key++;
return;
}

ones(n-1, osf+"0");
if(osf.size()==0 or osf[osf.size()-1]=='0') {
	ones(n-1, osf+"1");
}

}

int main()
{

ll t, n,count=0;
cin>>t;
while(t!=0){
cin>>n;

ones(n, "");
for(ll i=0;i<map1.size();i++){
        count++;
}

cout<<count<<endl;
map1.clear();
t–;
count=0;
}

}