网站建设参考论文,举报网站建设自查报告,美食网站开发毕业设计的主要内容,柳市网站优化个人主页#xff1a;平行线也会相交 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 #x1f354;本专栏旨在提高自己算法能力的同时#xff0c;记录一下自己的学习过程#xff0c;希望… 个人主页平行线也会相交 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 本专栏旨在提高自己算法能力的同时记录一下自己的学习过程希望对大家有所帮助 希望我们一起努力、成长共同进步。 斩题目录 一、题目描述二、解题思路三、解题代码 一、题目描述
实现 pow(x, n) 即计算 x 的整数 n 次幂函数即x的n次方 。
示例一 输入x 2.00000, n 10 输出1024.00000 示例二 输入x 2.10000, n 3 输出9.26100 示例三 输入x 2.00000, n -2 输出0.25000 解释2-2 1/22 1/4 0.25 二、解题思路
我们本题使用递归思想来解决问题。
解题过程分为3个步骤① 相同子问题确定函数头是什么、② 明确每个子问题在做些什么、③ 考虑递归出口当n等于0的时候。 解题思路在pow函数中首先判断n是否等于0如果是则返回1.0因为任何数的0次幂都等于1.0。 然后计算tmp为pow(x, n / 2)即x的n/2次幂。这一步使用递归来计算较小的次幂。 接着判断n是否为偶数如果是偶数则返回tmp的平方即tmp * tmp。如果n为奇数则返回tmp的平方再乘以x即tmp * tmp * x。 注意细节问题在本题中主要有两个细节问题第一点就是n为的负数的时候第二点就是一定要注意n的取值范围。
最后我们根据细节问题进行一定的特殊处理即可比如n为负数时我们需要把n强转为long long类型。
三、解题代码
class Solution {
public:double myPow(double x, int n) {return n 0 ? 1.0 / pow(x, -(long long)n) : pow(x, n);}double pow(double x,long long n){if(n 0) return 1.0;double tmp pow(x, n / 2);return n % 2 0 ? tmp * tmp : tmp * tmp * x;}
};最后就通过啦