例题给的减法非常巧妙,吸引了我完成这道题。
/*
* 一、已知计算机有一下原子操作
1、 赋值操作:b = a;
2、 ++a和a+1;
3、for( ){ ***}有限循环;
4、操作数只能为0或者正整数;
5、定义函数
实现加减乘除操作
提示:
实现减法操作:
static int dec(int n) {
int tmp = 0;
int result = 0;
for (int i = 0; i < n; i++) {
result = tmp;
tmp++;
}
return result;
}
这段代码执行后,result的值将变为n-1。注意到这段代码在自增时是如何巧妙地延迟了一步的。
现在,我们相当于有了自减一的函数dec。实现a-b只需要令a自减b次即可:
static int testA_B(int a, int b){
int result = a;
for(int i=0; i<b; i++){
result = dec(result);
}
return result;
}
*/
public class Calculate {
public static void main(String[] args) {
Calculate calculate=new Calculate();
int result;
//减法测试
result=calculate.minus(15, 5);
System.out.print("15 - 5 ="+result);
//加法测试
result=calculate.plus(15, 5);
System.out.print("\n15 + 5 ="+result);
//乘法测试
result=calculate.multiply(3, 5);
System.out.print("\n3 x 5 ="+result);
//除法测试
DivideResult resultDivde;
resultDivde=calculate.divide(18, 5);
System.out.print("\n18 / 5 ="+resultDivde.quotient+"·······"+resultDivde.remainder);
}
int decOne(int n) {
int tmp = 0;
int result = 0;
for (int i = 0; i < n; i++) {
result = tmp;
tmp++;
}
return result;
}
/*
* 减法:a-b
*/
int minus(int a, int b){
int result = a;
for(int i=0; i<b; i++){
result = decOne(result);
}
return result;
}
/*
* 加法:a+b
*/
int plus(int a, int b){
for(int i=0;i<b;i++){
a++;
}
return a;
}
/*
* 乘法:a x b
*/
int multiply(int a, int b){
int result=0;
for(int i=0;i<b;i++){
result=plus(result, a);
}
return result;
}
@SuppressWarnings("null")
DivideResult divide(int a, int b){
DivideResult divideResult = new DivideResult();
for(;a>=b;){
a=minus(a, b);
divideResult.quotient++;
}
divideResult.remainder=a;
return divideResult;
}
class DivideResult{
int quotient ;
int remainder ;
}
}
结果:
15 - 5 =10
15 + 5 =20
3 x 5 =15
18 / 5 =3·······3