☘前言☘
今天是九日集训第二天,我会记录一下学习内容和题解,争当课代表0.0.
注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0
链接:《LeetCode零基础指南》(第二讲) 函数
另外:昨天讲过的知识点我今天不会再放有需要请查看:
【解题报告】《LeetCode零基础指南》(第二讲) 函数
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 15min
全文目录
☘前言☘
🎁主要知识点梳理
📝循环的使用
🥨1.语法规则
🥞2.简单应用
🍔3.初始化表达式
🥙4.条件表达式
🌮5.执行表达式
🍗课后习题
剑指 Offer 64. 求1+2+…+n
231. 2 的幂
326. 3 的幂
342. 4的幂
1492. n 的第 k 个因子
367. 有效的完全平方数
🎁主要知识点梳理
📝循环的使用
在C/C++语言中有两种结构:while和for,但是在很多情况下,两者没有太多本质差别,所以我们学习相对应用更方便的for语句。
🥨1.语法规则
for语句的表现形式是:
for(循环初始化表达式;循环条件表达式;循环执行表达式){ 循环体; }
它的运行过程为
首先,执行循环初始化表达式,这个只会执行一次!!
然后,执行循环条件表达式,若值为真,则执行循环体,否则结束。
接着执行循环体后执行之循环执行表达式。
重复执行2、3直到2为假跳出循环。
🥞2.简单应用
下面的程序演示了一个简单的1+2+…+n的值求解
int sumNums(int n){ // 入口函数传参为n int i; // 声明一个变量 int sum = 0; // 作为返回的值初始化为0 for(i = 1; i <= n; ++i) { // 循环 sum += i; // 循环体 } return sum; // 返回结果 }
🍔3.初始化表达式
3.1 初始化表达式外置
这里就是讲初始化表达式提到for循环外面
int sumNums(int n){ // 入口函数传参为n int i = 1; // 声明一个变量 int sum = 0; // 作为返回的值初始化为0 for(; i <= n; ++i) { // 循环 sum += i; // 循环体 } return sum; // 返回结果 }
3.2 初始化表达式内置
这里就是可以直接进行初始化和赋值。但是这样使用for循环执行完之后会直接进行销毁变量。所以这个程序是错的!!!
int sumNums(int n){ // 入口函数传参为n for(int i = 1, sum = 0; i <= n; ++i) { // 循环 sum += i; // 循环体 } return sum; // 返回结果 }
3.3 初始化表达式的正确用法
为了之后还能使用变量,就需要在外面声明。
int sumNums(int n){ // 入口函数传参为n int i,sum; for(i = 1, sum = 0; i <= n; ++i) { // 循环 sum += i; // 循环体 } return sum; // 返回结果 }
🥙4.条件表达式
条件表达式可以省略,但是会是个死循环,下面的程序必超时。
int sumNums(int n){ // 入口函数传参为n int i = 1; // 声明一个变量 int sum = 0; // 作为返回的值初始化为0 for(;; ++i) { // 循环 sum += i; // 循环体 } return sum; // 返回结果 }
🌮5.执行表达式
它是结构体执行完之后加的一部分内容,本身可以放在循环体内。
int sumNums(int n){ // 入口函数传参为n int i = 1; // 声明一个变量 int sum = 0; // 作为返回的值初始化为0 for(;i<= n; ) { // 循环 sum += i; // 循环体 i++; } return sum; // 返回结果 }
🍗课后习题
剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n
题目描述
求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路1
管那么多,循环冲!不解释,知识点有。
int sumNums(int n){ int i; int sum = 0; for(i = 1; i <= n; ++i) { sum += i; } return sum; }
思路2
没限制递归呀。递归冲!
int sumNums(int n){ if(n == 1) return 1;//递归出口 return n + sumNums(n - 1); //下一层递归 }