Why am i getting correct output even though the code is logically incorrect
===

Following is the code for reducing a given number to a single digit by adding the digits of the number recursively.
For example if the input is 845 the output is 8 . 8+4+5 = 17 --> 1+7--> 8(output)



    #include <stdio.h>
    #define TRUE 1

    int reduceToSingle(int numb);

    int main() 
    {
	int numb;
	scanf("%d",&numb);
      printf("Original = %d Single digit = %d\n", numb, reduceToSingle(numb));

      return TRUE;

    } 


    int reduceToSingle(int numb)
    {
        int sum =0,digit=0;
        for(digit=numb%10;numb!=0;numb=numb/10)
        {
           digit=numb%10;
           sum=sum+digit;
        }

        if(sum>9){
  
           reduceToSingle(sum);
        }
        else{
           return sum;
        }
     }



in the above code 
in the if(sum>9) block i haven't returned the function value. Instead i just called the function. Logically this function should give an incorrect value. But when i ran the above program in my system i am getting the correct sum of digits output. i am unable to comprehend the logic behind this behaviour. please help