黑马程序员技术交流社区
标题:
紧急问题,求大神解决?
[打印本页]
作者:
张慈瑞
时间:
2014-7-24 23:48
标题:
紧急问题,求大神解决?
private static void toBinary(int num) {
//递归方法计算二进制数
if(num>1)
{
toBinary(num/2);
}
System.out.println(num%2);
}
如果我num输入是15的话打印是多少?为什么?
作者:
郑飞
时间:
2014-7-25 00:31
本帖最后由 郑飞 于 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);
}
大概就这个意思 递归方法看不清 动手画图或者多套几次 没难度 一看就明白
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2