zoukankan      html  css  js  c++  java
  • System.exit(0)

    表示程序正常退出

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

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

  • 相关阅读:
    arguments.callee
    React成长路之--项目搭建
    JS判断页面是否被iframe及禁止页面被iframe
    flex实现常见布局
    移动端 js 实现文章的分页、翻页
    移动端开发时,搜索框聚焦时键盘出现“搜索”两字,实现友好操作
    JSON详解
    50SQL练习
    设计模式之单例模式
    Spring REST 入门教程
  • 原文地址:https://www.cnblogs.com/fthjane/p/4776070.html
Copyright © 2011-2022 走看看