闲着无聊,突发奇想,可不可以不用“+-*/”来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以1为基础单位运算的,所以这里参与运算的参数只考虑整数情况。首先是加法运算,定义一个函数add(),返
闲着无聊,突发奇想,可不可以不用 “+ - * /” 来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以1为基础单位运算的,所以这里参与运算的参数只考虑整数情况。首先是加法运算,定义一个函数add(),返回两个参数的和。
//首先是加法运算,定义一个函数add(),返回两个参数的和,参数也可以是负数哦。
function add($a,$b){
while($b!=0){
if($b>0){
$b--;
$a++;
}else{
$b++;
$a--;
}
}
return $a;
}
echo add(11,12);
//下面是减法运算,定义函数为sub()。和加法运算是逆运算,代码相似度高达99.9%。
function sub($a,$b){
while($b!=0){
if($b>0){
$b--;
$a--;
}else{
$b++;
$a++;
}
}
return $a;
}
echo sub(11,12);
//然后是乘法运算,比加减运算复杂一点点,其实就是多次加法运算,代码如下:
function multi($a,$b){
$r = 0;
if($a==0 && $b==0) return $r;
while($b!=0){
$i=0;
if($b>0){
$b--;
while($i!=$a){
if($a>0){
$i++;
$r++;
}else{
$i--;
$r--;
}
}
}else{
$b++;
while($i!=$a){
if($a>0){
$i++;
$r--;
}else{
$i--;
$r++;
}
}
}
}
return $r;
}
echo multi(11,12);
//最后是除法运算,除法是乘法的逆运算,但是为了保证参数和运算结果都在整数范围内,我将除法的函数简化了参数范围。范围是正整数,并且第二个参数不能为0,参数最好是整除的。
function divis($a,$b){
if($a<0 || $b<=0 ) return 'error';
$r = 0;
while($a>0){
$i=0;
while($i!=$b){
$i++;
$a--;
}
if($a<0) break;//防止不整除的情况
$r++;
}
return $r;
}
echo divis(22,2);









