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)+"个"+'\n');
//        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);



posted @ 2020-11-17 20:10  eosclover  Views(406)  Comments(0Edit  收藏  举报