黑马程序员技术交流社区

标题: 请问各位,下面代码的运行结果为什么总是不对啊?? [打印本页]

作者: 慕容冰若    时间: 2014-3-23 08:52
标题: 请问各位,下面代码的运行结果为什么总是不对啊??
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;
               
        }

}



作者: luoyilan222    时间: 2014-3-23 10:50
        // 定义求阶乘的方法
        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);   这两个地方
       
作者: 慕容冰若    时间: 2014-3-24 16:45
luoyilan222 发表于 2014-3-23 10:50
// 定义求阶乘的方法
        public static long f(int n) {
                System.out.println(n);

额。。。是这样啊。。。可是运行的时候都没有错误额。。。只是出现的结果不对
作者: luoyilan222    时间: 2014-3-24 20:34
  //兄弟1000的阶乘结果(int)越界咯  
       f(int n)          return n * f(n - 1);   你在调用地时候 f(n)  把n的值设置小一点,结果就正确了哦 ,你设置2,3,4,5,6测试一下就会是正确的,如果值过大越界,就会越界,结果就会是错误的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2