首页 > 编程语言 > 详细

判断是否为奇数的有趣算法

时间:2020-02-03 15:34:38      阅读:59      评论:0      收藏:0      [点我收藏+]

题目描述

写一个程序,判断是否为奇数。很简单的题目,但是实现可以有很多种,也很有意思。

思考

最简单的是这样的

1
2
3
4
5
6
7
public static boolean (int i) {
if (i % 2 == 1) {
return true;
} else {
return false;
}
}

我们进一步观察,发现这一句i % 2 == 1是boolean类型,那么可以优化成这样

1
2
3
public static boolean (int i) {
return i % 2 == 1;
}

但是发现没有考虑负数的问题,于是再次修改

1
2
3
public static boolean (int i) {
大专栏  判断是否为奇数的有趣算法="line"> return i % 2 == 1 || i % 2 == -1;
}

仔细观察,再次优化

1
2
3
public static boolean (int i) {
return i % 2 != 0;
}

一般面试写到这里就足够了。

然而,并没有这么简单。

朋友,你知道二进制吗?

移位运算符是比取模速度快的,再次改

1
2
3
public static boolean (int i) {
return i >> 1 << 1 != i;
}

这个比较厉害,大部分人想不到这里,然而。。。

1
2
3
public static boolean isOdd(int i) {
return (i & 1) == 1;
}

& 都为1则为1,其它为0

逼格满分。
掌声。

判断是否为奇数的有趣算法

原文:https://www.cnblogs.com/lijianming180/p/12255804.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!