Java实现n阶阶乘的计算
1.问题描述
自然数由1~n的n个数连乘积叫作n的阶乘,记作n!。要求设计一个算法,可以根据输入的数字计算其相应的阶乘。
2.问题分析
这是一个比较简单的问题,所谓阶乘实际就是n内数字的连续相乘的运算,想必大家都做过连加问题,俩者的解决思路其实很相近。但是要了解递归的思路实现会更加简洁。
3.解决方案
- 方案1:
既然阶乘就是连续乘积,那么我们可以设计一个循环体,在循环体外声明俩个变量,一个存放乘积,另一个存放需要计算的数字temp,而循环体内则进行乘积运算,每乘一次需要temp自加并与n进行比较,以此类推,直到temp>n结束循环,返回结果。
- 方案2:
如下图,每一次运算都需要调用上一次的结果,也就是将我做的任务的之前部分交给其他人,需要我做的时候直接拿来别人的结果用。而且阶乘的计算有明显的结束标志,即计算完n阶阶乘就算完成任务。这很明显是一种典型的递归问题,那么就直接采用递归的思想进行计算。
4.算法实现
public class Box{ public static void main(String[] args){Scanner sc=new Scanner(System.in);while(true){System.out.print("please input a number:");int num=sc.nextInt();System.out.println();System.out.println("method1---the factorial of "+num+" is:" +fact(num));System.out.println("method2---the factorial of "+num+" is:" +recurrence(num));}}//采用循环连乘法public static int fact(int num){int temp=1;int factorial=1;while(num>=temp){factorial=factorial*temp;temp++;}return factorial;}//采用递归法public static int recurrence(int num){if(num<=1)return 1;elsereturn num*recurrence(num-1);}
}
运行结果
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
