ホームページ > php教程 > php手册 > 仅用自增自减运算实现加减乘除

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

WBOY
リリース: 2016-06-06 19:35:26
オリジナル
1289 人が閲覧しました

闲着无聊,突发奇想,可不可以不用“+-*/”来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以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);  
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート