黑马程序员技术交流社区

标题: 递归问题 [打印本页]

作者: 焦健    时间: 2013-2-22 20:34
标题: 递归问题
使用递归的方式可以将十进制数转换为二进制数,但是不能处理负数的情况,请问怎么使用递归的方式解决。。
  1.         public static void toBin(long value){

  2.                 //判断value除以2的结果是否大于0,如果大于0就进行递归。
  3.                 if(value/2>0){
  4.                         toBin(value/2);
  5.                 }
  6.                 System.out.print(value%2);//打印value%2的结果
  7.         }
复制代码

作者: 江苏孙浩    时间: 2013-2-22 20:38
可以试试取反加1.
先去对应整数,记录下其二进制。
然后取反
然后+1(模拟二进制加法实现)。
作者: 谢波    时间: 2013-2-22 20:45
  1. public static void toBin(long value)
  2.         {
  3.                 if(value >>> 1 != 0)
  4.                         toBin(value >>> 1);
  5.                 System.out.print(value & 1);
  6.         }
复制代码

作者: 焦健    时间: 2013-2-22 20:54
谢波 发表于 2013-2-22 20:45

非常感谢。。
作者: 偏執旳、靑春    时间: 2013-2-22 20:58
1.先取得负数的绝对值,用mbs方法
2.用~取反符号取反
3.加0x1就OK了




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