A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有大神能说下思路吗?
用递归,完全没法。找不到出口和规律了。、。。。

7 个回复

倒序浏览
引用BigInteger这个类 有意外惊喜
回复 使用道具 举报
你坑不坑啊,1000的阶乘多大你算过么,都超出范围了
回复 使用道具 举报
都超范围了,递归搞不了
  1. package it.heima.exercise;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 //times(2);
  5.                 System.out.println(times(23));
  6.         }
  7.        
  8.         public static long times(long n) {
  9.                
  10.                 if(n == 1) {
  11.                         return 1;
  12.                 } else {
  13.                         return n*times(n-1);
  14.                 }
  15.                
  16.         }
  17.        
  18. }
复制代码
回复 使用道具 举报
额,会内存溢出吧
回复 使用道具 举报
               、、、、、这个有点闹偶
回复 使用道具 举报
mmakun 中级黑马 2015-5-30 11:20:34
7#
判断1到1000的每个数各能被5整除几次,能整除几次加几
回复 使用道具 举报
注释很详细了,思路我就不多说了吧


public static void main(String[] args) {

                //新建一个值为1的BigInteger对象 ,BigInteger 支持任意精度的整数,其数据不会丢失
                BigInteger result = new BigInteger("1");
                //声明一个变量去接收结果
                int count=0;
               
                for (int i = 2; i <= 1000; i++)

                {
                        // 调用multiply()方法 ,循环相乘,得出结果。
                        result = result.multiply(new BigInteger(i + ""));

                }
                /*System.out.println(result);*/
                // 从整数将其变为string类型
                String str = result.toString();
               
                //遍历一边str字符串
                for (int i = 0; i < str.length(); i++) {
                        //存在等于0的情况 count++得到结果
                        if (str.charAt(i)=='0') {
                                count++;
                        }
                }
                System.out.println("1000!的结果中包含0有"+count+"个");
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马