Java操作應用——奇數判斷
提問人:ylm發(fā)布時間:2020-09-29
奇數可以被定義為被2整除余數為1的整數。表達式 num% 2 計算的是 num整除 2 時所產生的余數,因此看起來這個程序應該能夠正確運轉。遺憾的是,它不能;它在四分之一的時間里返回的都是錯誤的答案。
為什么是四分之一?因為在所有的 int 數值中,有一半都是負數,而 isOdd 方法對于對所有負奇數的判斷都會失敗。在任何負整數上調用該方法都回返回 false ,不管該整數是偶數還是奇數。
這是 Java 對取余操作符(%)的定義所產生的后果。該操作符被定義為對于所有的 int 數值 a 和所有的非零 int 數值b,都滿足下面的恒等式:
(a / b) * b + (a % b) == a
現在進行修改如下:
使用此代碼,不僅是解決了奇數的負的問題,而且這個代碼也高度優(yōu)化。因為,算術和邏輯運算的速度更快,比除法和乘法,結果取得了更快。
繼續(xù)查找其他問題的答案?
相關視頻回答
點擊加載更多評論>>