zoukankan      html  css  js  c++  java
  • [PHP] 算法-数值的整数次方的PHP实现

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
    
    思路:
    1.指数的二进制表达10^6次方 可以表示10^110(二进制) 10^100 * 10^10 * 10^000=>10^4 * 10^2
    2.移位运算
    
    while(n!=0){
        if((n&1)==1)
            res*=curr;
        curr*=curr;// 翻倍
        n>>=1;// 右移一位
    }
    <?php
    function Power($base, $n){
        $res = 1;
            $curr = $base;
        $exponent;
        if($n>0){
            $exponent = $n; 
        }else if($n<0){
            if($base==0) return 0;
            $exponent = -$n;
        }else{// n==0
            return 1;// 0的0次方
        }   
        //$exponent转成二进制,有多少位就循环多少次,curr就执行n+1次方,如果当前位是1的就结果相乘
        while($exponent!=0){
            if(($exponent&1)==1)
                $res*=$curr;
            $curr*=$curr;// 翻倍
            //var_dump($curr);
            $exponent>>=1;// 右移一位
        }   
        return $n>=0?$res:(1/$res);//指数是负数的情况 
    }
    
    $a=Power(10,6);
    var_dump($a);
    ~               
  • 相关阅读:
    fenby C语言P21
    fenby C语言 P20
    fenby C语言 P19
    fenby C语言 P18
    fenby C语言 P17
    fenby C语言 P16
    fenby C语言 P15
    fenby C语言 P14
    Python学习之路:subprocess模块和面向对象
    Python学习之路:XML模块
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9873523.html
Copyright © 2011-2022 走看看