(函数分治法)实现pow函数(x的y次方幂)

  • 题目:实现pow函数。
  • 题目分析:因为一个一个乘,循环太大,参考矩阵连乘问题:对于n=4的话,可以得出x的平方,然后平方与平方相乘。节省计算次数。对于偶数的幂,只要x的平方多次递归调用即可;对于奇数的幂,只要n-1,就又变成偶数的幂的形式了,无非就是多乘一个x的问题。
  • 代码:
    class Solution {
    public:
        //分治法:分而治之
        double pow(double x, int n) {
            if (n < 0)
                return 1.0/power(x, -n);
            else
                return power(x, n);
        }
        double power(double x, int n) {
            if (n == 0)
                return 1;
            double result = 0;
            double temp = pow(x, n/2);//递归的处理相乘的幂,重复利用已经的出来的值。
            if (n%2 == 1)
                result = x * temp * temp;//当幂为奇数的时候,多乘一个就变为偶数问题了。
            else
                result = temp * temp;//当幂为偶数的时候,
            return result;
        }
    };
原文地址:https://www.cnblogs.com/Kobe10/p/6370043.html