博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
System.exit(0)
阅读量:5927 次
发布时间:2019-06-19

本文共 1502 字,大约阅读时间需要 5 分钟。

表示程序正常退出

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);
    }
}
麻烦很多,不仅有重复代码,而且增加运行负担。

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

转载于:https://www.cnblogs.com/fthjane/p/4776070.html

你可能感兴趣的文章
jqueryui.position.js源代码分析
查看>>
一个奇妙的java坑:Long 类型的比较
查看>>
java基础---->摘要算法的介绍 (转)
查看>>
mysql中binlog_format模式与配置详解
查看>>
互联网协议入门
查看>>
iOS上文本绘制的几种方法
查看>>
利用 autoconf 和 automake 生成 Makefile 文件
查看>>
support.SerializationFailedException: Failed to deserialize payload.
查看>>
Wireshark使用注意事项
查看>>
Pig系统分析(7)-Pig有用工具类
查看>>
C 标准库 - <float.h>
查看>>
Http 请求处理流程
查看>>
Web系统开发构架再思考-前后端的完全分离
查看>>
win2008 r2下配置IIS7(ASP.net运行环境)
查看>>
ORACLE FORMS PL/SQL PACKAGE SHOW TIPS WINDOW
查看>>
docker 日志清理与设置
查看>>
c#金额转换成中文大写金额 .Net开发Windows服务
查看>>
180426
查看>>
Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)
查看>>
mysql远程连接 Host is not allowed to connect to this MySQL server
查看>>