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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 newlaw2013 于 2012-4-1 08:34 编辑

/*
用递归的方法做一个整数的二进制转换。

注意,if和while的区别就是:
if只判断条件一次,不管代码执行与否,不会"再回首判断"。
while则是多次"回首",直到条件不满足。

*/
class DiGuiDemo
{
        public static void main(String[] args)
        {
                toBin(6);
        }
       
        public static void toBin(int num){
                if(num>0)//这里的if如果换做while,程序会无限循环打印:1。
                {toBin(num/2);
                        System.out.println(num%2);
                }
        }
}
-----------------------------------------------------------------------------------------------------------------------------------------------
延伸问题:我想获取系统执行toBin()方法的时间,增加代码后程序如下:
class DiGuiDemo
{
        public static void main(String[] args)
        {
                long beginTime = System.currentTimeMillis();
                toBin(6);
                long endTime = System.currentTimeMillis();
                System.out.println("Time cost:"+(endTime-beginTime)+"ms");
        }
       
        public static void toBin(int num){
                if(num>0)//这里的if如果换做while,程序会无限循环打印:1。
                {toBin(num/2);
                        System.out.println(num%2);
                }
        }
}
结果执行都是Time cost:0 ms
为什么是0呢?是方法运算量太少CPU已快到这个时间可以忽略了吗?貌似加大num的值也是一样的结果。
如果可以请诸位学友帮忙支招:如何获取一个方法的运行时间?

1 个回复

倒序浏览
确实运算量太少,加一句:Thread.sleep(10);
或加一个数量大的循环。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马