利用for循环和while循环实现:
public class java_16 {
public static void main(String[] args) {
// 计算阶乘
System.out.println(new java_16().factorial(4));
System.out.println(new java_16().factorial1(4));
}
// for循环实现
public int factorial(int num){
int result = 1;
for(;num>0;num--){
result *= num;
}
return result;
}
// while循环
public int factorial1(int num){
int result = 1;
while (num>0){
result*=num;
num--;
}
return result;
}
}
利用递归实现:
public class java_16 {
public static void main(String[] args) {
// 计算阶乘
System.out.println(new java_16().factorial(4));
System.out.println(new java_16().factorial1(4));
System.out.println(new java_16().factorial2(0));
}
// 递归实现
public int factorial2(int num){
if(num>0){
return num*factorial2(num-1);
}else if(num==0){
return 1; //0的阶乘是1
}else{
return -1;
}
}
}
注意:0的阶乘是1
递归的原理:
首先,4!=4*3*2*1,代码中递归的代码num*factorial(num-1),假如num=4
(1)第一次进来,num=4,那么返回4*factorial(3),
(2)第二次递归调用factorial(3),factorial(3)等于3*factorial(2),
(3)第三次递归调用factorial(2),factorial(2)等于2*factorial(1),
(4)第四次递归调用factorial(1),factorial(1)等于1*factorial(0),
(5)第五次进来factorial(0)直接等于1,因此返回第一步,连起来就是4*3*2*1,即4的阶乘。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/149720.html