栈的调用虽然很方便,但是需要大量的栈空间来存储函数的调用
static void Main(string[] args) { Console.WriteLine(Mul(5)); Console.ReadKey(); } //计算1到n的累积 static int Mul(int n) { if (n == 1) { return 1;//等于1的时候就该退出啦 } return n * Mul(n - 1); }
递归主要就是自己调用自己,提供一个出口来退出,停止自己调用自己
说下 n * Mul(n - 1) ,例如这里的 5
5*Mul(4) = 5*4*Mul(3) = 5*4*3*Mul(2) = 5*4*3*2*Mul(1)
这时候最后一个Mul(1)直接返回的1,没有调用自己,程序就退出了
返回 5*4*3*2*1的值