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);