算法:在5个原子操作的限制下实现加减乘除

例题给的减法非常巧妙,吸引了我完成这道题。



 /*
  * 一、已知计算机有一下原子操作
	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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值