设置断点F11一行行调试就明白了。每次会把传入的参数循环减等到1或0退出来和前循环参数相乘。
Response.Write(GetFactorail(0));
Response.Write(GetFactorail(1));
Response.Write(GetFactorail(2));
Response.Write(GetFactorail(3));
Response.Write(GetFactorail(4));
Response.Write(GetFactorail(5));
》》012624120
上数据结构课时,老师曾经教过我构建一个简单的堆栈来分析递归调用过程,你也不妨试试这种办法。
调试一下。一步步走不就知道了
1 private int GetFactorail(int baseNum)
2 {
3 if (baseNum == 0)
4 return 0;
5 else if (baseNum == 1)
6 return 1;
7 else
8 return baseNum * GetFactorail(baseNum - 1);
9 }
你这个列子,if (baseNum == 0)
4 return 0; 这一步没用的。
对与递归,你这样看。return baseNum * GetFactorail(baseNum - 1);
这一步,调用的函数,当做是另一个名字的函数。只是功能上一样。这样一理解就很容易了。
过程就像是:
1 1
2 2
3 3
4 4
N
如上,从1进入,走到一个满足结束的条件,往回反