1+2+...+n
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路:
利用短路求值的方法
C语言的逻辑操作符 && , || 具有 短路求值 的特性.
逻辑与 &&
&& 操作符的左操作数总是首先进行求值, 如果它的值为真, 则继续计算右操作数的值, 然后执行与操作得到表达式结果; 如果它的值为假, 根据与操作 有假则假 的性质可以断定该表达式的值为假, 所以不再计算右操作数的值.
表达式:expression1&& expression2
上述代码中,当判断false之后便知与的结果肯定是false了,因此后面的expression2便不再执行。因此a仍然为1。
逻辑或 ||
|| 操作符的左操作数也是首先进行求值, 如果它的值为假, 则继续计算右操作数的值, 然后执行与操作得到表达式结果; 如果它的值为真, 根据或操作 有真则真 的性质可以断定该表达式的值为真, 所以不再计算右操作数的值.
表达式:expression1 ||expression2
当expression1为true时,后面的expression2不再运行。因此上述代码中判断了true之后,后面的a=0语句不再执行,因此a的值仍为1。
因此可利用短路&&来实现if的功能,使用递归来实现循环while的功能
class Solution {
public:
int Sum_Solution(int n) {
int sum = n;
bool flag = (sum>0)&& ((sum += Sum_Solution(n-1))>0);
return sum;
}
};
随机推荐
- mybatis - [04] mapper文件详解
Mybatis的Mapper文件(通常是以.xml为扩展名的文件)主要用于定义SQL语句和它们与Java接口方法之间的映射关系.以下是Mapper文件中一些常用的配置元素和属性. 一.mapper ...
- 李沐动手学深度学习V2-chapter_convolutional-modern
李沐动手学深度学习V2 文章内容说明 本文主要是自己学习过程中的随手笔记,需要自取 课程参考B站:https://space.bilibili.com/1567748478?spm_id_from=3 ...
- 【MATLAB习题】四杆机构的运动学参数求解
1.问题描述 2. 推导过程 3. matlab代码 最新版代码 直接采用求微分的方式得到角度,角速度等数值解,速度慢,但是代码少,容易看懂(矩阵看起来真难受). 以前做的一个博客文章用的是矩阵运算求 ...
- SICK Ranger3源码分析——断线重连
前言 本文可在https://paw5zx.github.io/SICK-Ranger3-source-code-analysis-01/中阅读,体验更加 简单分析一下SICK Ranger3源码中断 ...
- python pandas csv 大文件 DataFrame转换为List
python 将大文件读取为 DataFrame 时,直接对整个文件进行读取会比较耗时,甚至内存还会不足. https://pandas.pydata.org/pandas-docs/stable/u ...
- 基于pandas的数据清洗 -- 重复值的清洗
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...
- HTTP内容编码和HTTP压缩的区别
HTTP压缩,在HTTP协议中,其实是内容编码的一种. 在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码. 从而达到压缩的目的. 也可以使用其他的编码把内容搅乱 ...
- Linux下查询tomcat进程命令
由于查询tomcat进程时将ps -ef|grep tomcat命令记错为ps -f|grep tomcat命令,因此对比两个命令进行区分. ps -f |grep tomcat执行结果: dgztc ...
- Vite CVE-2025-30208 安全漏洞
Vite CVE-2025-30208 安全漏洞 一.漏洞概述 CVE-2025-30208 是 Vite(一个前端开发工具提供商)在特定版本中存在的安全漏洞.此漏洞允许攻击者通过特殊的 URL 参数 ...
- [源码系列:手写spring] IOC第五节:Bean注入Bean
主要内容 添加BeanReference类,包装一个bean对另一个bean的引用.如beanA引用beanB,那么在实例化beanA时,如果propertyValue.value是BeanRefer ...