欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Leetcode JAVA刷刷站(50)Pow(x, n)

Leetcode JAVA刷刷站(50)Pow(x, n)

2025/1/21 20:59:46 来源:https://blog.csdn.net/m0_73399576/article/details/141307708  浏览:    关键词:Leetcode JAVA刷刷站(50)Pow(x, n)

一、题目概述

二、思路方向

方法1:递归(考虑正负n)

       这种方法利用递归的思想,将问题分解为更小的子问题。同时,考虑到n可能是负数,我们可以先处理n的符号,然后将问题转化为正数幂的问题。

public class Solution {  public double myPow(double x, int n) {  long N = n; // 转换为long避免溢出  if (N < 0) {  x = 1 / x;  N = -N;  }  return powHelper(x, N);  }  private double powHelper(double x, long n) {  if (n == 0) return 1;  if (n % 2 == 0) {  double half = powHelper(x, n / 2);  return half * half;  } else {  return x * powHelper(x, n - 1);  }  }  
}

方法2:迭代

       迭代方法相比于递归,在处理大数时可能更加高效,因为它避免了递归栈的开销。

public class Solution {  public double myPow(double x, int n) {  long N = n;  if (N < 0) {  x = 1 / x;  N = -N;  }  double result = 1.0;  while (N > 0) {  if (N % 2 == 1) {  result *= x;  }  x *= x;  N /= 2;  }  return result;  }  
}

方法3:使用Math库(简单但不满足题目要求)

       虽然这不符合题目“实现”的要求,但在实际应用中,我们可以直接使用Java的Math库来完成这个任务。

public class Solution {  public double myPow(double x, int n) {  if (n < 0) {  return 1 / Math.pow(x, -n);  }  return Math.pow(x, n);  }  
}

     但请注意,这种方法虽然简单,但并不符合题目要求我们自己实现pow函数的意图。

执行结果: 

三、小结

       在面试或实际编程中,推荐使用递归或迭代的方法来实现pow函数,因为这两种方法不仅锻炼了我们的编程能力,还能更好地处理极端情况(如大数幂)和性能问题。而直接使用Math库虽然简单,但缺乏了编程的乐趣和深度。

 结语

生命太短

没留时间给我们每日带着遗憾醒来

!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com