递归就是方法内部调用这个方法本身,简单来说就是自己调用自己。
1.阶乘公式
n!=n*(n-1)...2*1(n为正整数)=n*(n-1)!
另规定:0!=1
2.循环实现阶乘计算
/**
* 使用循环的方法完成阶乘计算
* @param num
* @return
*/
public static int forFact(int num) {
int n = 1;
//检查输入的是否为正整数
if (num < 0) {
System.out.println("负数没有阶乘,请输入正整数");
return -1;
}
//循环次数为num次
for (int i = 1; i <= num; i++) {
//进行乘法运算
n *= i;
}
//返回阶乘结果
return n;
}
3.递归实现阶乘结算
/**
* 使用递归的方法完成阶乘计算
* @param num
* @return
*/
public static int fact(int num) {
if (num < 0) {
System.out.println("负数没有阶乘,请输入正整数");
return -1;
} else if (num == 0) {
return 1;
}
return num * fact(num - 1);
}