zoukankan      html  css  js  c++  java
  • (函数分治法)实现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;
          }
      };
  • 相关阅读:
    资源与锁
    资源与锁
    Leetcode-Rotate List
    Leetcode-Unique Paths II
    Leetcode-Unique Paths
    Leetcode-Minimum Path Sum
    Leetcode-Sqrt(x)
    Leetcode-Set Matrix Zeroes
    Leetcode-Search a 2D Matrix
    Leetcode-Combinations
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6370043.html
Copyright © 2011-2022 走看看