I am currently working on a program in my computer science class that does various computations with complex numbers. For some reason, when the program gets to where it needs the DivCmplx (posted below), the program seems to be stuck in an infinite loop. I added in some print lines to see where it gets stuck. On my program, it inputs two complex numbers and repeatedly prints out the phrases "I can get here--NO PROBLEM" and "I can see the light...OVER AND OVER AGAIN!!!" This problem is using recursion and I think it has something to do with not getting the function to its base case, making it run the same recursion over and over. If anyone can help, it would be greatly appreciate!!!

Code:
Cmplx DivCmplx(Cmplx z1, Cmplx z2)
{
   /* Write this function  */
  Cmplx z;
  z = (Cmplx)malloc(sizeof(cmplxCDT));
  printf("I get here -- NO PROBLEM!\n");
  if (!z)
    FatalError("Memory allocation error.\n",1);
  if(z2->x == 0 && z2->y == 0){
    printf("Arithmetic exception!\n");
    free(z);
    return NULL;
  }
  else if(z2->y == 0){
    z->x = ((z1->x)/(z2->x));
    z->y = ((z1->y)/(z2->x));
    return z;
  }
  else
  {
    printf("I can see the light...OVER AND OVER AGAIN!!!\n");
    free(z);
   return DivCmplx(MulCmplx(z1, ConjCmplx(z2)), MulCmplx(z2,
ConjCmplx(z2)));
  }
}
Thanks,
Jacob