本文以计算5的阶乘为例:5! =5*4*3*2*1=120
一、循环阶乘
1、While循环
public class TestWhileFactorial{
public static void main(String[] args){
int result=factorial(5);
System.out.println("5! ="+result);
}
public static int factorial(int n){
int s=1;
int i=1;
while(i<=n){
s*=i;
i++;
}
return s;
}
}
2、For循环
public class TestForFactorial{
public static void main(String[] args){
int result=factorial(5);
System.out.println("5! ="+result);
}
public static int factorial(int n){ //定义一个factorial方法
int s=1;
if(int i=2;i<=n;i++){
s*=i;
}
return s;
}
}
二、递归阶乘
public class Testfactorial{
public static void main(String[] args){
int result=factorial(5);
System.out.println("5! ="+result);
}
public static int factorial(int n){
if(n==1){
return 1; //增加出口条件,当n=1时,无需计算阶乘,直接返回结果1.
}
int s=n*factorial(n-1);
return s;
}
}
注意:所有能以递归解决的问题,循环都可以解决。当解决复杂问题时,递归的实现方式更为简单。