A+B問題
A+B問題
描述
給出兩個整數a和b, 求他們的和, 但不能使用 + 等數學運算子。
思路:
1、 採用二進位制進行加法操作
2、 a ^ b ; 相異為1-->二進位制不進位的結果;即0+1=1,1+0=1,0+0=0
3、 (a & b ) << 1 ; (a & b)二進位制相同位都是1則該位為1,即1+1 = 10,需要進位則右移一位-->二進位制進位的結果
4、 遞迴呼叫(2步 + 3步)
好了,我們跟著思路實現一下
遞迴實現
public static int aplusb(int a , int b) {
if(a == 0 ) {
return b;
}
if(b == 0 ) {
return a;
}
int i , j;
i = a^b;//不進位得到的結果
j = (a&b)<<1;//進位得到的結果
//繼續相加
return aplusb(i , j);
}
迭代實現
public static int aplusb2(int a , int b) {
int temp;
while(a != 0 && b != 0 ) {
temp = a ^ b;
b = (a & b) << 1;
a = temp;
}
return a == 0 ? b : a;
}
相關文章
- Python入門:A+B問題Python
- A+B 演算法問題演算法
- 面試問題 - 只用位操作在ABAP裡實現a+b面試
- 1016 部分A+B (15分)【java題解】Java
- A+B
- As Easy As A+B
- CCCC-L1-025 正整數A+B題解
- hdu 1720 A+B Coming
- [#181024][PAT Practice] A+B FormatORM
- [Algorithm] 1. A+B ProblemGo
- 1016. 部分A+B (15)
- [PAT B] 1011 A+B 和 C
- PAT:1001 A+B Format (20分)ORM
- 2020/12/27 G小明A+B
- 1016 部分A+B (15 分)JavaJava
- HDU 1040 As Easy As A+B(堆排序)排序
- PAT-B 1016 部分A+B
- PAT-B 1093 字串A+B 【集合】字串
- PAT-B 1011 A+B 和 C
- PAT答案(D進位制的A+B)
- 問題 C: 百雞問題
- 【問題】Nacos 使用問題整理
- 什麼是P問題、NP問題和NPC問題
- L1-025 正整數A+B pythonPython
- 1022 D進位制的A+B (20分)
- 博基計劃(3)---P問題、NP問題、NPC問題、NP-hard問題
- [轉載]什麼是P問題、NP問題和NPC問題
- 1007:計算(a+b)×c的值(C C++)C++
- HDU 2033 : 人見人愛A+B (C語言)C語言
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- PAT B1022 D進位制的A+B(進位制轉換板題,簡單模擬)
- Java服務.問題排查.問題復現Java
- 約瑟夫問題(丟手絹問題)
- 問題 F: 開燈問題(第二講)
- 提問題比解決問題更重要
- [開發問題]React-native問題集React
- L1-025 正整數A+B 分數 15
- [短文速讀-1] a=a+b和a+=b的區別