zoukankan      html  css  js  c++  java
  • Java24-递归练习-求50的阶乘的所有零和尾部零的个数

    练习参考来源:https://blog.csdn.net/u011541946/article/details/81916379

    import java.math.BigInteger;
    
    public class diguilianxi {
        public static void main(String[] args) {
            
            BigInteger num = new BigInteger("50");
    //        System.out.println("递归数为:" + num.toString());
            
            String diguiResult=digui(num).toString();
            System.out.println("递归结果为:" + diguiResult);
            System.out.print("求一共包含多少個零:"+AllZero(diguiResult)+"个"+'
    ');
    //        System.out.println("反转后的结果为:"+reverString(diguiResult));
            System.out.print("結尾包含多少個零:"+TailZero(diguiResult)+"个");
            
        }
    
        public static BigInteger digui(BigInteger i) {
    //        System.out.println(i.toString());
            //先判断递归结束条件 入参 i==1
            if (BigInteger.ONE.equals(i)) {
                return i;
            }
            
            // 求阶乘
            return i.multiply(digui(i.subtract(BigInteger.ONE)));
    }
    
        public static Integer AllZero(String diguiResult) {
            System.out.println("=============求一共包含多少個零===========");
            int count = 0;    
            for(int i=0;i<diguiResult.length();i++){
                if(((Character)(diguiResult.charAt(i))).equals( '0' )){
                    count++;
                }
            }
            return count;
            
        }
    
        public static Integer TailZero(String string) {
            System.out.println("=============結尾包含多少個零===========");
            // 求全部的0
            int count = 0;
            String resString=reverString(string);
            System.out.println("反转后输出为:"+resString);
            
            for(int i=0;i<resString.length();i++){
                if('0' == resString.charAt(i)){
                    count++;
                }
                else{
                    break;
                }
            }
            return count;
        }
        public static String reverString(String sourceString){
            String tarSource="";
            int length=sourceString.length();
            for(int i=0;i<length;i++){
                tarSource=sourceString.charAt(i)+tarSource;
            }
            return tarSource;
    
        }
            
            
        }

    踩过的坑:

    1.Java中  ==和equal的区别

        == 表示 对内存地址进行比较,equals()表示 对字符串的内容进行比较

    2.Java中单引号和双引号的区别

     (1) 单引号引的数据 是char类型的,双引号引的数据 是String类型的;

     (2)单引号只能引一个字符,而双引号可以引0个及其以上。

       (3)char只是一个基本类型,而String 可以是一个类,可以直接引用。
              比如char c='c';不能直接对c调用方法。
              String s="abc";  这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了

      来源:https://www.cnblogs.com/zhangzs000/p/4519001.html

    3.java中bigdecimal转换成string

       BigDecimal bd=new BigDecimal("123");
       String OutString=bd.toString();
       System.out.println(OutString);



  • 相关阅读:
    Java怎样对一个属性设置set或get方法的快捷键
    小程序怎样控制rich-text中的<img>标签自适应
    Java中Arrys数组常用的方法
    Java 怎样实现调用其他方法
    Java保留两位小数
    解决ajax请求跨域
    rand(7) 到rand(10)
    c++生成随机数
    批量该文件名
    正则表达式(=)
  • 原文地址:https://www.cnblogs.com/eosclover/p/13993213.html
Copyright © 2011-2022 走看看