1. 程式人生 > >不使用“+”計算兩個正整數的和

不使用“+”計算兩個正整數的和

public int aplusb( int a , int b ){

  if( a == 0 ) return b;

  if( b == 0 ) return a;

  /*

    兩個正整數進行異或運算,得到的結果為兩個正整數不進位相加

    兩個正整數進行與運算,表示需要進位的位置,將結果左移1位(x2),得到進位後的資料

    使用遞迴,直到a或b中出現0,則跳出遞迴返回結果

  */

  int x = a^b;

  int y = ( a&b ) <<1;

  return aplusb( x , y );

}