C#——获取阶乘(递归、循环)
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n
根据定义,用递归的方式获取阶乘。
1 /// <summary> 2 /// 递归获取阶乘 3 /// </summary> 4 /// <param name="i">乘数</param> 5 /// <param name="max">阶乘</param> 6 /// <param name="result">当前结果</param> 7 /// <returns></returns> 8 public int nFactorial(int i, int max, int result) { 9 if (i <= max) { 10 result *= i; 11 result = nFactorial(i + 1, max, result); 12 } 13 return result; 14 }
当然,我们更习惯直接用循环获取阶乘。
1 /// <summary> 2 /// 循环获取阶乘 3 /// </summary> 4 /// <param name="n"></param> 5 /// <returns></returns> 6 public int nFactorial_while(int n) { 7 int result = 1; 8 if (n <= 0) { 9 return 1; 10 } 11 for (int i = 1; i <= n; i++) { 12 result *= i; 13 } 14 return result; 15 }
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。