当前位置: 首页 > news >正文

C++斩题录|递归专题 | leetcode50. Pow(x, n)

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【手撕算法系列专栏】【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;}
};

最后就通过啦:
在这里插入图片描述

http://www.lryc.cn/news/162179.html

相关文章:

  • 详解Redis之Lettuce实战
  • 【3】单着色器文件读取
  • 祝贺埃文科技入选河南省工业企业数据安全技术支撑单位
  • Chinese-LLaMA-Alpaca-2模型的测评
  • SLAM论文详解(5) — Bundle_Adjustment_LM(BALM)论文详解
  • C语言对单链表所有操作与一些相关面试题
  • 高防服务器如何抵御大规模攻击
  • Go 接口和多态
  • Git忽略文件的几种方法,以及.gitignore文件的忽略规则
  • C语言——指针进阶(2)
  • 【汇编中的寄存器分类与不同寄存器的用途】
  • 基于文本提示的图像目标检测与分割实践
  • 【4-5章】Spark编程基础(Python版)
  • 04 卷积神经网络搭建
  • 【hadoop运维】running beyond physical memory limits:正确配置yarn中的mapreduce内存
  • 数据结构--6.5二叉排序树(插入,查找和删除)
  • 无需公网IP,在家SSH远程连接公司内网服务器「cpolar内网穿透」
  • Java工具类
  • makefile之使用函数wildcard和patsubst
  • 算法通关村第十八关——排列问题
  • 基于STM32设计的生理监测装置
  • Go-Python-Java-C-LeetCode高分解法-第五周合集
  • 【前端知识】前端加密算法(base64、md5、sha1、escape/unescape、AES/DES)
  • leetcode 925. 长按键入
  • [CMake教程] 循环
  • Mojo安装使用初体验
  • 艺术与AI:科技与艺术的完美融合
  • Android常用的工具“小插件”——Widget机制
  • 探索在云原生环境中构建的大数据驱动的智能应用程序的成功案例,并分析它们的关键要素。
  • jupyter 添加中文选项