int num=1;
成都创新互联是少有的成都做网站、网站制作、营销型企业网站、微信小程序定制开发、手机APP,开发、制作、设计、外链、推广优化一站式服务网络公司,自2013年起,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
Scanner sc=new Scanner(system.in);
system.out.print("输入一个正整数");
int n=sc.nextInt();
String str=num+"*";
for( int i=2;i=n;i++){
str=str+i+"*";
if(i==n){
str=str+i;
}
num=num*i;//num*=i;这一步有两种实现,但是后面的运行速度比前面的要快!
}
system.out.println(str+"="+num);
效果是,你输入5:显示1*2*3*4*5=120
你好,下面我给出算法思想及其实现:
public class Divide {
/*
* 首先我们要理解计算机是怎么做除法的,计算机只能进行加法和加法运算
* 所以我们用减法去模拟除法运算
* 这里为了简单,只演示整数的相除运算
* 浮点数预算同理,就是控制精度问题
*/
/*
* param a 被除数
* param b 除数
* 返回值 商
*/
public static int divide(int a, int b){
if(a0 || b0){
throw new ArithmeticException("参数必须为非负整数") ;
}
if(b == 0){
throw new ArithmeticException("除数不能为0") ;
}
a -= b ;
if(a = b){ //这里就是控制精度,整数的比较简单
return divide(a,b) ; //递归调用
}
return a;
}
public static void main(String[] args) {
System.out.print("13 / 5 = " + divide(13,2) );
}
}
不知道lz在factory(int i)方法里面定义一个x=0是到底要闹哪样。明明是要根据传来的参数进行迭代判断。改了一下,希望对你有用(下次添加代码的时候要注意整洁,不然会干扰回答的~)。
import java.util.Scanner;
public class factorial_2 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner n1 = new Scanner(System.in);
int n = n1.nextInt();
System.out.println();
System.out.print(n + "的阶乘为:");
int sum = factorial(n);
System.out.print(sum);
}
private static int factorial(int i) {
//int x = 0;
if ( i == 1) {
return 1;
} else {
int temp;
temp = (int) i * factorial(i - 1);
return temp;
}
}
}
提醒楼主注意的是要注意int范围的问题。因为最后接收结果的是一个int sum类型的值,所以它可以解决的阶乘数也是有范围的。有必要的话可以改成Integer.