I'm having trouble understanding the following code fragment. Should it return 3 * 3=9

Code:#include <stdio.h> int factorial(int num); void main() { int fact, num=3; fact = factorial(num); printf("%d factorial = %d\n", num, fact); } int factorial(int num) { /* num factorial. Assumes num >= 1 */ if (num == 1) return 1; else return (num * factorial(num-1)); }