50. Pow(x, n)中等 快速幂模板 两种写法
Published on 2022-11-17 23:01 in 暂未分类 with 林动

50. Pow(x, n)中等 快速幂模板 两种写法

    1. Pow(x, n)
      实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。

    示例 1:

    输入:x = 2.00000, n = 10
    输出:1024.00000
    示例 2:

    输入:x = 2.10000, n = 3
    输出:9.26100
    示例 3:

    输入:x = 2.00000, n = -2
    输出:0.25000
    解释:2-2 = 1/22 = 1/4 = 0.25

    提示:

    -100.0 < x < 100.0
    -231 <= n <= 231-1
    -104 <= xn <= 104

    自递归,正负都可以计算
    class Solution {
        public double myPow(double x, int n) {
            if(n==0)return 1;
            double t=myPow(x,n/2);
            if(n%2==1)return t*t*x;
            if(n%2==-1)return t*t/x;
            return t*t;
        }
    }
    
    另写一个函数专门计算正幂
    class Solution {
        public double myPow(double x, int n) {
            long N=n;//可能存在负数MAX导致溢出
            if(N>0)return pow(x,N);
            else return 1/pow(x,-N);
        }
        public double pow(double x,long n){
            if(n==0)return 1;
            double t=pow(x,n>>1);
            if(n%2==0)return t*t;
            return t*t*x;
        }
    }
    
    迭代写法:
    class Solution {
        public double myPow(double x, int n) {
            long N=n;//可能存在负数MAX导致溢出
            if(N>0)return pow(x,N);
            else return 1/pow(x,-N);
        }
        public double pow(double x,long n){
            double t=x,ans=1.0;
            while(n>0){
            	if(n%2==1)ans*=t;
            	t*=t;
            	n/=2;
            }
            return ans;
        }
    }
    
    class Solution {
        public double myPow(double x, int n) {
            double ans=1.0,t=x;
            while(n!=0){
            	if(n%2==1)ans*=t;
            	if(n%2==-1)ans/=t;
            	t*=t;
            	n/=2;
            }
            return ans;
        }
    }
    
    posted @   林动  阅读(24)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 【自荐】一款简洁、开源的在线白板工具 Drawnix
    · 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
    · Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
    点击右上角即可分享
    微信分享提示