最近和一个刚参加工作的同事聊天谈到如何算一个数字的阶乘问题,我和他讨论了半天,他给我讲了几种做法,其中不外乎就是用循环,比如for,while。他觉得自己的代码还不错,给我现场演示了一遍,他的做法如下:
package Demo;
import java.util.Scanner;
public class sum {
public static void main(String[] args) {
System.out.println(“请输入一个数字:”);
Scanner input = new Scanner(System.in);
int i = input.nextInt();
int sum = 1;
while(i != 0){
sum *= i;
i–;
}
System.out.println(“计算结果为:” + sum);
}
}
其实,我看到这种写代码的方式和我当初在学校学习时无异。看他很开心,我不想打击他,我笑着问他,你如何不用循环去算一个数字的阶乘?他一脸懵,不用循环怎么算啊,我给他推荐了一个方法:递归算法。具体代码演示如下:
package Demo;
public class Test {
public static void main(String[] args) {
int i = calculation(5);
System.out.println(i);
}
static int calculation(int num){
if(num <= 0){
throw new IllegalArgumentException(“num must > 0”);
}
if(num == 1){
return 1;
}
return num * calculation(num - 1);
}
}
看到这里,相信大家对如何不用循环去算一个数字的阶乘有了新的思路,那就是递归算法,递归算法就是自己调用自己,并且要提供一个可以跳出递归的语句。聪明的你学会了吗?如果不懂可以关注我留言,我看到了会第一时间给大家解答的。
如何不使用for循环算数字N的阶乘——递归算法
最新推荐文章于 2025-05-31 11:10:31 发布