表示程序正常退出

System.exit(status)

当status非0时,表示程序为非正常退出。

status=0, 关闭当前正在运行的虚拟机。

求质因数分解的程序如下:

两种算法:

一种是用System.exit(0)

// 若不加此句,代码在运行完System.out.println(number)后,会回到for中从i++开始执行,不断执行 else和后面的打印语句。是因为递归吗?

代码

package basic40;

public class Divid {
    public static void divide(int a){
        for (int i = 2; i <= (int)(Math.sqrt(a)); i++){
            if(a % i == 0){
                System.out.print(i+"*");
                a = a / i;
                divide(a);
                break;
            }
            
        }
        System.out.print(a);
        System.exit(0);
    }
    
    public static void main(String []args){
        int a = 90;
        divide(a);
    }

}

另一种是不用System.exit(0)

package basic40;

public class Divide2PrimeMultiple {
    //need to judge whether the last number is prime number
    public static void divide(int number) {
        if (isPrimeNumber(number)) {
            System.out.println(number);
        } else {
            int i = 2;
            while(i <=(int)(Math.sqrt(number))){
                if (number % i == 0) {
                    System.out.println(i + ",");
                    number = number / i;
                    divide(number);
                    break;
                } else {
                    i++;
                }
            }
        }

}

//    }

private static boolean isPrimeNumber(int number) {
        boolean flag = true;
        for (int i = 2; i <= (int) (Math.sqrt(number)); i++) {
            if (number % i == 0) {
                flag = false;
                break;
            } else {
                flag = true;
            }
        }
        return flag;
    }

public static void fenjie(int n){
        for(int i=2;i<=(int)(Math.sqrt(n));i++){
            if(n%i==0){
                System.out.print(i+"*");
                fenjie(n/i);
                }
        }
        System.out.print(n);
        System.exit(0);///不能少这句,否则结果会出错
        }

public static void main (String []args){
        int a = 90;
        divide(a);
//        divideNoJudge(a);
//        fenjie(a);
    }
}
麻烦很多,不仅有重复代码,而且增加运行负担。

有时候在递归中强制关闭编译器是有必要的。

最新文章

  1. IDEA新建MAVEN项目时速度缓慢
  2. nodejs链接mysql数据库,执行简单的增删改查操作
  3. 社保系列11《ATR》
  4. 系统性能监控之vmstat和iostat命令
  5. Angular.js入门的样例
  6. 查看Mac OSX机器上存在的所有Device
  7. NET中级课--文件,流,序列化1
  8. [每日一题] 11gOCP 1z0-052 :2013-09-15 Enterprise Manager Support Workbench..................B9
  9. LearnCpp.com
  10. Blockly编程:用Scratch制作游戏愤怒的小牛(小鸟)
  11. 在SecureCRT中无需输入密码登录Linux主机
  12. 用线性单元(LinearUnit)实现工资预测的Python3代码
  13. js高级知识---词法分析和AO 链
  14. WPF---Binding学习(一)
  15. day 7-18 mysql case when语句
  16. SWPU-ACM集训队周赛之组队赛(3-11)G题题解
  17. 步步为营-69-Razor基础
  18. PhoneGap 数据库操作
  19. 认识程序的执行:从高级语言到二进制,以java为例
  20. [转]python进行中文文本聚类(切词以及Kmeans聚类)

热门文章

  1. mysql 的日志文件
  2. java递归查询方法
  3. Tower of Hanoi问题
  4. Linux下tcp协议socket的recv函数返回时机分析(粘包)
  5. [设计模式] 18 备忘录模式Memento Pattern
  6. SSL 握手过程
  7. c#操作剪切板
  8. [转载]Spring Beans Auto-Wiring
  9. POJ 2349 Arctic Network(最小生成树,第k大边权,基础)
  10. C#中的文件操作