• 技术文章 >php教程 >php手册

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

    2016-06-06 19:35:26原创523

    闲着无聊,突发奇想,可不可以不用“+-*/”来实现四则运算呢。折腾了一下,发现还是很多方法可以实现的,比如仅用自增自减运算来实现。不过由于自增自减是以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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:PHP简单网页图片抓取类 下一篇:PHP采集利器:根据开始字符串和结束字符串截取需要的采集内容数
    大前端线上培训班

    相关文章推荐

    • 从网上搜到的phpwind 0day的代码• 一个比较蛋疼的php缓存类• PHP单例:只在整个页面周期内唯一• php操作mysql的类!• PHP函数功能语法速查表

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网