求阶乘

本文提供了一个简单的Java程序示例,用于计算指定整数的阶乘。通过一个名为Fact的类实现,其中包含一个计算阶乘的方法。主函数演示了如何使用该方法计算3的阶乘。
class  Fact 
{
   
float  fact( int  n) // 计算n!的方法 
   {
      
int  i;
      
float  x  =   1 ;
      
for (i  =   1 ; i  <=  n; i  ++  ) 
         x 
=  x  *  i;
      
return  x;
   }
   
public   static   void  main(String args[]) 
   {
      Fact f 
=   new  Fact();
      System.out.println(f.fact(
3 ));
   }
}
 
在C语言中,阶乘常见的方法有递归和迭代两种,以下是详细介绍: ### 递归方法 递归是指在函数的定义中使用函数自身的方法。对于阶乘,`n`的阶乘可以表示为`n * (n-1)!`,当`n`为0或1时,阶乘为1。以下是使用递归实现阶乘的代码: ```c #include <stdio.h> double fact(int n) { if (n > 1) { return n * fact(n - 1); } if (n == 1 || n == 0) { return 1; } } int main() { int n = 10; printf("fact(%d) = %.0f\n", n, fact(n)); return 0; } ``` 在上述代码中,`fact`函数接收一个整数`n`,如果`n`大于1,则返回`n`乘以`fact(n - 1)`,即`n`乘以`n-1`的阶乘;如果`n`为1或0,则返回1。这种方式简洁地实现了阶乘的计算,但可能会因为递归深度过大导致栈溢出问题。该代码思路参考了引用[1]中的`fact`函数实现。 ### 迭代方法 迭代是通过循环的方式逐步计算阶乘。从1开始,依次乘以2、3直到`n`,得到`n`的阶乘。以下是使用迭代实现阶乘的代码: ```c #include <stdio.h> double fact(int n) { double result = 1.0; for (int i = 1; i <= n; i++) { result *= i; } return result; } int main() { int n = 10; printf("fact(%d) = %.0f\n", n, fact(n)); return 0; } ``` 在上述代码中,`fact`函数使用`for`循环,从1到`n`依次将每个数乘到`result`变量中,最终得到`n`的阶乘。这种方式避免了递归可能带来的栈溢出问题,性能相对较好。 ### 不同数据类型的考虑 需要注意的是,对于较大的`n`,阶乘的结果可能会超出`int`类型能够表示的范围,因此在代码示例中使用了`double`类型来存储结果。例如在引用[2]中提到,1 - 20的阶乘结果已经超出了`int`能够接收的范围,故使用`double`类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值