不能做任何比较操作,不能用系统内部的函数。
如何找到 α、β、γ 三个正数中最小的那个?
Javascript代码
for (var i = 0; ; i++) {//从0开始往大的试... //用位操作 - 异或,如果为0则说明每位都相同,即相等,!0为true if (!(i ^ a) { alert('a:' + a); } else if (!(i ^ b) { alert('b:' + b); } else if (!(i ^ c) { alert('c:' + c); } }
没测试...不知道对不对,就这思路...
想到另外一个代替比较的方法,不过貌似javascript这种弱类型语言才行,其他语言就不知道了:
if (!((a/b)+'').indexOf('0.')) { alert('a比b小'); }
a除以b后加上空字符串转为string类型,然后检查'0.'字符的位置,找不到则返回-1,取反为fasle,不在开始位置找到则大于0,取反为false,只有以'0.'开头时才会返回0,取反为true。
这种方法比开始的好多了,可以直接比较,不论有几个数,效率也很高了。
------------------------------------
好吧indexOf确实也算系统方法了。
替换一下
var resultStr = (a/b)+''; if (!(resultStr[0]-0) && !(46^(resultStr[1]-0))) { alert('a比b小'); }
这回真没用系统方法了,不过也确实隐含了很多系统方法...js的featrue
又写麻烦了
function _compare (a, b) { var resultStr = (a/b)+''; if (!(resultStr[0]-0)) { console.log('a比b小'); return false; } else if (!a ^ b) { console.log('a和b相等'); return true; } else { console.log('a比b大'); return true; } } if (_compare(a, b)) { if (_compare(a, c)) { alert('a'); } else { alert('c'); } } else { if (_compare(b, c)) { alert('b'); } else { alert('c'); } }
就不用管小数点,第一位是0,肯定是0.xxx的小于1的小数。另外加上相等的判断。
看了上面几个答案,尤其是JS代码的那个
a ^ b = 0; //说明a = b
下面是代码:
int min(int a, int b) { return (a ^ (a % b)) ? b : a; }
如果a < b,a % b 返回 a ,那么 a ^ a 的结果便是 0,函数返回 a ;
同理其他的可得。
2 回答5.1k 阅读✓ 已解决
1 回答760 阅读✓ 已解决
1 回答777 阅读✓ 已解决
2 回答634 阅读
1 回答524 阅读
599 阅读
同用 JavaScript 实现了一个 ... 这种方法不犯规吧 ..?