Coding Problems for return

These are my codes:

using UnityEngine;

using System.Collections;

public class CodeExample : MonoBehaviour 

{

        void Awake ()
	{
		print (Fac (-1));
		print (Fac (0));
		print (Fac (5));
	}

	int Fac (int n)
	{
		if (n < 0)
			return (0);
		if (n == 0)
			return (1);
		int result = n * Fac (n - 1);
		return (result);
	}
}

In my unity console, the print (5) shows 120.
how did result got multiplied?
i didnt use the *= operation, how did it multiplied automatically?

By doing a little debug, you can see the Fac(5) calls recursively the Fac method 4 times which is indicated by your line:

int result = n * Fac (n - 1);

The test code:

	class Program
	{
		static void Main(string[] args)
		{
			Console.WriteLine("Doing Fac(-1)");
			Console.WriteLine(Fac(-1));
			Console.WriteLine("Doing Fac(0)");
			Console.WriteLine(Fac(0));
			Console.WriteLine("Doing Fac(5)");
			Console.WriteLine(Fac(5));
			Console.ReadKey();
		}

		static int Fac(int n)
		{
			if( n < 0 )
				return (0);
			if( n == 0 )
				return (1);
			int result = n * Fac(n - 1);
			Console.WriteLine("	 Result:{0}", result);

			return (result);
		}
	}

Which outputs:

Doing Fac(-1)
0
Doing Fac(0)
1
Doing Fac(5)
         Result:1
         Result:2
         Result:6
         Result:24
         Result:120
120