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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test {
       
        public static void main(String[] args) {
               
                Long l = Long.valueOf(f(1000));//将长整数转化为Long类的对象
                String s = l.toString();//将Long的对象转化为String对象
                int counts = method(s);
                System.out.println("末尾0的个数是:"+counts);

        }
       
        //定义求阶乘的方法
        public static long f(int n) {
                if(n==1)
                        return 1;
                else
                        return n * f(n-1);
               
        }
       
        //定义求字符串末尾有几个零的方法:
        public static int method(String str) {
               
                int count = 0;
                for(int i=str.length()-1; i>=0; i--) {
                        if(str.charAt(i) != '0') {
                break;
            }

            count++;

                       
                }
                return count;
               
        }

}


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

正序浏览
  //兄弟1000的阶乘结果(int)越界咯  
       f(int n)          return n * f(n - 1);   你在调用地时候 f(n)  把n的值设置小一点,结果就正确了哦 ,你设置2,3,4,5,6测试一下就会是正确的,如果值过大越界,就会越界,结果就会是错误的。
回复 使用道具 举报
luoyilan222 发表于 2014-3-23 10:50
// 定义求阶乘的方法
        public static long f(int n) {
                System.out.println(n);

额。。。是这样啊。。。可是运行的时候都没有错误额。。。只是出现的结果不对
回复 使用道具 举报
        // 定义求阶乘的方法
        public static long f(int n) {
                System.out.println(n);
                if (n == 1)
                        return 1;
                else
                        return n * f(n - 1);  
        }
        ------------------------------------------------------------------------------------------------
        //兄弟1000的阶乘结果(int)越界咯  
       f(int n)          return n * f(n - 1);   这两个地方
       

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马