10
11 private static int getFibo(int i) { 12 if (i == 1 || i == 2) 13 return 1; 14 else
15 return getFibo(i - 1) + getFibo(i - 2); 16 } 17
18 public static void main(String[] args) {
19 System.out.println(\一年内繁殖的兔子数:\20 for (int j = 1; j <= 12; j++) {
21 System.out.print(getFibo(j) + \22 if (j % 5 == 0)
23 System.out.println(); 24 } 25 } }
?
递归练习(1000的阶乘所有零和尾部零的个数)
需求:求出1000的阶乘所有零和尾部零的个数,不用递归做 [Java] 纯文本查看 复制代码 ?
黑马程序员济南中心 编著
01 /**
02 * 求出1000的阶乘所有零和尾部零的个数,不用递归做 因为1000的阶乘远远超出了int的取值范围所以要03 到大整数 04 *
05 * @author Somnus 06 * 07 */
08 public class Demo { 09
10 public static void main(String[] args) { 11 demo1();// 求1000的阶乘中所有的零 12 demo2();// 获取1000的阶乘尾部有多少个零 13 } 14
15 public static void demo1() {
16 BigInteger bigger1 = new BigInteger(\17 for (int i = 1; i <= 1000; i++) {
18 BigInteger bigger2 = new BigInteger(i + \
19 bigger1 = bigger1.multiply(bigger2); // 将bigger1与bigger2相乘的结果赋值给bigg20 }
21 String str = bigger1.toString(); // 获取字符串表现形式 22 int count = 0;
黑马程序员济南中心 编著
23 for (int i = 0; i < str.length(); i++) {
24 if ('0' == str.charAt(i)) { // 如果字符串中出现了0字符 25 count++; // 计数器加1 26 } 27 }
28 System.out.println(count); 29 } 30
31 public static void demo2() {
32 BigInteger bigger1 = new BigInteger(\33 for (int i = 1; i <= 1000; i++) {
34 BigInteger bigger2 = new BigInteger(i + \35 bigger1 = bigger1.multiply(bigger2); 36 }
37 String str = bigger1.toString();
38 StringBuilder sb = new StringBuilder(str); 39 str = sb.reverse().toString(); 40
41 int count = 0; // 定义计数器 42 for (int i = 0; i < str.length(); i++) { 43 if ('0' != str.charAt(i)) { 44 break;
黑马程序员济南中心 编著
45 } else { 46 count++; 47 } 48 } 49
50 System.out.println(count); 51 } }
?
递归练习(1000的阶乘尾部零的个数)
需求:求出1000的阶乘尾部零的个数,用递归做 [Java] 纯文本查看 复制代码 ? 01 /**
02 * 求出1000的阶乘尾部零的个数,用递归做 03 *
04 * @author Somnus 05 * 06 */
07 public class Demo { 08
黑马程序员济南中心 编著
09 public static void main(String[] args) {
10 System.out.println(getLastCount(getSum(1000))); 11 } 12
13 public static BigInteger getSum(int n) { 14 if (n == 1) {
15 return new BigInteger(\16 } else { 17
18 BigInteger sum = new BigInteger(n + \19 return sum.multiply(getSum(n - 1)); 20 } 21 } 22
23 public static int getLastCount(BigInteger sum) { 24 int count = 0;
25 String s = sum.toString();
26 StringBuffer sb = new StringBuffer(s); 27 String s1 = sb.reverse().toString(); 28 for (int i = 0; i < s1.length(); i++) { 29 if ('0' == s1.charAt(i)) { 30 count++;
黑马程序员济南中心 编著