闲着无聊,突发奇想,可不可以不用“+-*/”来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以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);