黑马程序员技术交流社区

标题: 递归中的if和while问题总结(附流程图)+延伸问题... [打印本页]

作者: newlaw2013    时间: 2012-4-1 08:31
标题: 递归中的if和while问题总结(附流程图)+延伸问题...
本帖最后由 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的值也是一样的结果。
如果可以请诸位学友帮忙支招:如何获取一个方法的运行时间?
作者: 黄秋    时间: 2012-4-3 03:29
确实运算量太少,加一句:Thread.sleep(10);
或加一个数量大的循环。




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