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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张慈瑞 中级黑马   /  2014-7-24 23:48  /  969 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        private static void toBinary(int num) {

                //递归方法计算二进制数
                if(num>1)
                {
                        toBinary(num/2);
                }
                        System.out.println(num%2);
        }
如果我num输入是15的话打印是多少?为什么?

1 个回复

倒序浏览
本帖最后由 郑飞 于 2014-7-25 00:36 编辑

简单的说 这个方法就是把输入的参数一直除2然后倒序输出每个参数模2的结果 10进制转2进制
举个例子 你输入15 是这样的过程:

toBinary(15)
=>
        toBinary(15) {
                        if(15>1)
                        {
                                        toBinary(15/2);// toBinary(7)
                        }
                                        System.out.println(15%2);
        }
=>
        toBinary(15) {
                        if(15>1)
                        {
                                toBinary(7) {
                                        if(7>1)
                                        {
                                                        toBinary(7/2);// toBinary(3)
                                        }
                                                        System.out.println(7%2);
                                }
                        }
                                        System.out.println(15%2);
        }
=>
        toBinary(15) {
                        if(15>1)
                        {
                                toBinary(7) {
                                        if(7>1)
                                        {
                                                        toBinary(3) {
                                                                if(3>1)
                                                                {
                                                                                toBinary(3/2);// toBinary(1)
                                                                }
                                                                                System.out.println(3%2);
                                                        }
                                        }
                                                        System.out.println(7%2);
                                }
                        }
                                        System.out.println(15%2);
        }
=>
        toBinary(15) {
                if(15>1)
                {
                        toBinary(7) {
                                if(7>1)
                                {
                                        toBinary(3) {
                                                if(3>1)
                                                {
                                                                toBinary(1) {
                                                                        if(1>1)//不成立
                                                                        {
                                                                                toBinary(1/2);//跳过
                                                                        }
                                                                                System.out.println(1%2);//从最里层依次输出
                                                                }
                                                }
                                                                System.out.println(3%2);
                                        }
                                }
                                                System.out.println(7%2);
                        }
                }
                                System.out.println(15%2);
        }
大概就这个意思 递归方法看不清 动手画图或者多套几次 没难度 一看就明白
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马