Is my implementation correct? I'm assuming it's not because I keep getting zero returned... Where am I going wrong?

Code:`//implementation of the recursive ackermann function`

int ack(int m, int n)

{

if (m == 0){

return n+1;

}

else if(m > 0){

ack(m-1, 1);

}

else if((m > 0) && (n > 0)){

ack(m-1, ack(m, n-1));

}

}//end ack