Problem sa izvrsavanjem programa

Zdravo. Zadatak mi je da nadjem sve moguce nacine sa kojima skakac iz mesta n,m moze doci do polja n1,m1.
Ja sam napisao program al nesto ne radi kao da se ne izvrsava do kraja. Ako biste mogli pogledati hvala.
Evo ga kod:

#include
using namespace std;

int h=8;

void pisi(int a[8][8])
{
cout<<endl;
for(int i=0;i<h;i++)
{
for(int j=0;j<h;j++)
cout<<a[i][j];

	cout<<endl;
}

}
void f(int n,int m,int k,int n1,int m1,int a[8][8])
{
if(m==m1 && n==n1)
{
a[n][m]=k;
pisi(a);
}

else if(n<h && m<h && n>=0 && m>=0 && a[n][m]==0)
{
	a[m][n]=k;
	cout<<"k";
	f(n+2,m+1,k+1,n1,m1,a);
	f(n+2,m-1,k+1,n1,m1,a);
	f(n-2,m+1,k+1,n1,m1,a);
	f(n-2,m-1,k+1,n1,m1,a);
	f(n+1,m-2,k+1,n1,m1,a);
	f(n-1,m+2,k+1,n1,m1,a);
	f(n+1,m+2,k+1,n1,m1,a);
	f(n-1,m-2,k+1,n1,m1,a);
}

return;

}
int main()
{
int n,m,m1,n1;

int a[8][8];

for(int i=0;i<h;i++)
{
	for(int j=0;j<h;j++)
	a[i][j]=0;
}	

cin>>n>>m>>n1>>m1;

f(n,m,1,n1,m1,a);

cout<<endl<<"nema dalje";

}
P.S. ne radi ni za matricu 4×4

u backtracking algoritmu moraš da brišeš posle rekurzivnog pozivanja tj da stavljaš a[n][m] = 0. takođe je lepše da moguće poteze skakaća držiš u tabeli.

void f(int n,int m,int k,int n1,int m1,int a[8][8]) {
if(n < 0 || n >= h || m < 0 || m >= h ||a[n][m] != 0)
return;

a[n][m] = k;

if(n==n1 && m==m1)
    pisi(a);
else {
    int pX[] = {2, 2, -2, -2, 1, 1, -1, -1};
    int pY[] = {1, -1, 1, -1, 2, -2, 2, -2};
    for(int i = 0; i < 8; i++)
        f(n + pX[i],m + pY[i], k+1, n1, m1, a);
}
a[n][m] = 0;

}

Aha hvala sad bi trebalo da radi