热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第九日集训:循环结构与递归算法

本次课程重点讲解了C++中的循环结构及其应用,包括for循环的基本语法和使用技巧。通过几个具体的编程题目,深入探讨了如何利用循环和递归来解决问题,如计算连续整数之和、判断数字是否为2、3、4的幂等。

知识点概览


本节主要介绍了C++中循环控制结构的使用,特别是for循环:


for (初始化表达式; 条件表达式; 更新表达式) {
循环体
}

题目解析


题目一:剑指 Offer 64 - 不用加减乘除运算求和


题目要求在不使用循环和条件语句的情况下计算1+2+...+n。解决方案采用了递归的方法,通过函数自身调用来实现累加功能。


class Solution {
public:
int sumNums(int n) {
return n == 1 ? 1 : n + sumNums(n - 1);
}
};

为了满足题目要求,还可以利用逻辑运算符&&的短路特性来避免显式的条件判断:


class Solution {
public:
int sumNums(int n) {
bool dummy = (n > 1) && (n += sumNums(n - 1));
return n;
}
};

题目二:231. 判断2的幂


此题的关键在于理解2的幂次方在二进制表示下的特点,即除了最高位为1外,其余位均为0。因此,可以通过检查n & (n - 1) == 0来判断一个数是否为2的幂,同时需要注意处理n=0的情况。


class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
};

题目三:326. 判断3的幂


对于3的幂,可以利用对数变换将问题转化为判断对数结果是否为整数。具体来说,如果n=3^x,则log(n)/log(3)应为整数。需要注意的是,由于浮点数运算可能存在误差,需要设置一个小阈值来判断结果是否接近整数。


class Solution {
public:
bool isPowerOfThree(int n) {
if (n <= 0) return false;
double logResult = log(n) / log(3);
return fabs(logResult - round(logResult)) <1e-10;
}
};

题目四:342. 判断4的幂


4的幂同样可以通过对数变换来解决,但还需要额外判断该数是否为2的幂以及是否为完全平方数。


class Solution {
public:
bool isPowerOfFour(int n) {
if (n <= 0) return false;
int root = sqrt(n);
return root * root == n && (n & (n - 1)) == 0;
}
};

题目五:1492. 寻找第k个因子


此题要求找到给定整数n的第k个正因子。可以通过遍历1至n的所有整数,统计每个数是否为n的因子,并在计数达到k时返回当前数。


class Solution {
public:
int kthFactor(int n, int k) {
int count = 0;
for (int i = 1; i <= n; ++i) {
if (n % i == 0) {
if (++count == k) return i;
}
}
return -1;
}
};

题目六:367. 判断有效完全平方数


此题可通过二分查找法高效解决。基本思想是在1至num之间进行搜索,寻找是否存在某个数的平方等于num。


class Solution {
public:
bool isPerfectSquare(int num) {
if (num == 1) return true;
int left = 1, right = num;
while (left <= right) {
int mid = left + (right - left) / 2;
if (mid == num / mid && num % mid == 0) return true;
else if (mid else right = mid - 1;
}
return false;
}
};

总结


今天的练习涵盖了循环结构和递归的基本应用,涉及了数学运算、逻辑判断等多个方面。通过这些练习,不仅加深了对循环和递归的理解,也提高了解决实际问题的能力。


推荐阅读
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • LeetCode 540:有序数组中的唯一元素
    来源:力扣(LeetCode),链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array。题目要求在仅包含整数的有序数组中,找到唯一出现一次的元素,并确保算法的时间复杂度为 O(log n) 和空间复杂度为 O(1)。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
author-avatar
我-是二毛控控控_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有