chafferers
2016-09-25 12:09
import java.util.Scanner;
public class Math {
public static void fenjie(int n) {
for (int i=2;i <=n;i++) {
if (i == n) {
System.out.print(i);
return;
}
if (n > i && (n % i == 0)) {
System.out.print(i+"*");
fenjie(n / i);
break;
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = input.nextInt();
fenjie(n);
}
}
fenjie(n/i)这个在java中称为方法的递归调用。递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。看到分解里面的if(n > i && (n % i == 0))语句,这是判断它是否再次调用本身方法,如果你不使用递归的话,你想要达到的分解效果将会使代码很冗杂,不简洁。还有问题欢迎讨论。
fenjie其实是分解的意思,即分解并输出参数n的因数,n是质数的话只输出它本身,n是合数的话输出 除了1和本身之外 的因数。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题