返回信息流代码如下,求2的n次方,递归调用的问题
最后一行return(n&1)
报错【Error:(9, 18) java: 不兼容的类型: int无法转换为boolean】
我是看着邓俊辉数据结构C++版本改的代码,需要怎么改这个代码呢?
-------------------------
public class testand {
public static void main(String[] args) {
int n=5;
System.out.println(power2(n));
}
public static int sqr(int a){return a*a;}
public static int power2(int n){
if (n==0) return 1;
return(n&1)?sqr(power2(n >> 1)) << 1 : sqr(power2(n >> 1));
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #57847同步于 2017/10/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
小白求助 整数与1按比特相与的问题
fightingR
2017/10/24镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
bingo
【 在 nanguohao 的大作中提到: 】
: Java不支持整型数值和布尔值之间的转换,即数字1在Java里就是数字1,不能转换成布尔值的true
((n&1)==1)?blah:blah
暖神,应该是1[ema11]
【 在 nuanyangyang 的大作中提到: 】
: ((n&1)==0)?blah:blah
public class testand {
public static void main(String[] args) {
int n=5;
System.out.println(power2(n));
}
public static int sqr(int a){return a*a;}
public static int power2(int n){
if (n==0) return 1;
return((n&1)==1)?sqr(power2((n-1) >> 1)) << 1 : sqr(power2(n >> 1));
}
}
应该是n-1吧
【 在 fightingR 的大作中提到: 】
: 代码如下,求2的n次方,递归调用的问题
: 最后一行return(n&1)
: 报错【Error:(9, 18) java: 不兼容的类型: int无法转换为boolean】
: ...................
赞!解决了报错的问题,不过应该是==1啦~~~谢谢大神!
【 在 nuanyangyang 的大作中提到: 】
: ((n&1)==0)?blah:blah