下面是详细讲解“C# 实现阶乘 (递归,非递归) 实现代码”的完整攻略:
什么是阶乘
阶乘(Factorial)指的是从1到某个正整数n之间所有整数的乘积,通常用n的阶乘表示,例如:5的阶乘为5!,它的值为 1×2×3×4×5=120。
非递归方式实现阶乘
以计算5的阶乘为例,非递归方式的实现代码如下:
int factorial = 1;
for (int i = 1; i <= 5; i++)
{
factorial *= i;
}
以上代码中,使用了循环语句 for 来对 1~5 这一区间的数字进行累乘,最终得到了阶乘结果。
递归方式实现阶乘
以计算5的阶乘为例,递归方式的实现代码如下:
public int Factorial(int n)
{
if (n == 1)
return 1;
else
return n * Factorial(n - 1);
}
以上代码中,定义了一个递归函数 Factorial,它接收一个整数参数 n,如果 n 为 1,返回 1,否则返回 n 乘以 Factorial(n-1)。
示例说明
示例一:计算10的阶乘
使用非递归方式计算10的阶乘:
int factorial = 1;
for (int i = 1; i <= 10; i++)
{
factorial *= i;
}
Console.WriteLine(factorial);
使用递归方式计算10的阶乘:
static int Factorial(int n)
{
if (n == 1)
return 1;
else
return n * Factorial(n - 1);
}
Console.WriteLine(Factorial(10));
以上两种方式都可以计算出10的阶乘,但递归方式的代码比较简洁,而且可以处理更复杂的问题。
示例二:计算余数阶乘
要求计算一个数的余数阶乘,即阶乘结果模除另一个数的余数,可以通过在计算过程中加入取余运算来实现。
使用递归方式计算10的余数阶乘:
static int Factorial(int n, int mod)
{
if (n == 1)
return 1 % mod;
else
return (n % mod) * Factorial(n - 1, mod) % mod;
}
Console.WriteLine(Factorial(10, 7)); // 4
以上代码中,新增了一个参数 mod,表示取余的值,递归过程中对每个数字都进行了取余运算,并保证了每次乘法的结果都能对 mod 取余。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 实现阶乘 (递归,非递归) 实现代码 - Python技术站