Java 求阶乘的两种方法,利用for循环和递归法;
for循环更加简单一点,而递归法更加优雅;
但是递归法有一个缺点。假如求5的阶乘。利用递归法需要求5*4!,而要去求出4的阶乘。依次类推,直到求到1的阶乘;在最后还没求完1的阶乘时需要一直占用内存,无法释放。
(1)for循环:
import java.util.*;
public class lx1
{
public static void main(String[] args)
{
jc m=new jc();
int z;
Scanner sc=new Scanner(System.in);
z=sc.nextInt();
m.f(z);
System.out.println(m.sum);
}
}
class jc //for求阶乘
{
int sum=1;
void f(int a){
{
int i;
for( i=1;i<=a;i++)
{
sum*=i;
}
}
}
}
(2)递归法:
import java.util.*;
public class lx2 //可变参数
{
public static void main(String[] args)
{
j m=new j();
int z;
Scanner sc=new Scanner(System.in);
z=sc.nextInt();
m.f(z);
System.out.println( m.f(z));
}
}
class j
{
int f(int a){
{
int sum=1;
if(a==0)
return 1; //递归法求阶乘
else
return a*f(a-1);
}
}
}
初次写文,有任何不足还请诸位多多指教



