请问这个程序是怎么执行的,执行循序是怎么回事?

public int factorial(int num)
{
/* 局部变量定义 */
int result;

    if (num == 1)
    {
        return 1;
    }
    else
    {
        result = factorial(num - 1) * num;
        return result;
    }
}

static void Main(string[] args)
{
    NumberManipulator n = new NumberManipulator();
    //调用 factorial 方法
    Console.WriteLine("6 的阶乘是: {0}", n.factorial(6));
    Console.WriteLine("7 的阶乘是: {0}", n.factorial(7));
    Console.WriteLine("8 的阶乘是: {0}", n.factorial(8));
    Console.ReadLine();

}

这个为什么会是算阶乘的呢,如果num不为1不是应该直接输出(num-1)*num,为什么会循环起来呢?

当num不等于1的时候它会调用factorial(num-1)然后*num;直到num==1的时候,不满足调用factorial函数的条件才不调用,这叫做递归