Heim >php教程 >php手册 >仅用自增自减运算实现加减乘除

仅用自增自减运算实现加减乘除

WBOY
WBOYOriginal
2016-06-06 19:35:261283Durchsuche

闲着无聊,突发奇想,可不可以不用“+-*/”来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以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);  
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn