Date
Mar 31, 2023
need_review
need_review
type
剑指 Offer(第 2 版)
undo
undo
难度
中等
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
限制:
1 <= n <= 10000
python
- 由于无法使用for循环和乘除法来进行数字的累加, 但是递归可以起到相同的效果
- 不能使用if来判断n是否到1, 可以使用and来代替.
- 当and前面为True时, 执行and后面的代码
- 当and前面为False时, 不执行and后面的代码
- 所以当n=0时, 直接return n → 递归结束
C++
- c++中>>和<<两个运算符
- a<<1 = a*2
- a>>1 = a/2
- 1<<a =
a>>b: 右移运算, 将a的二进制向右移动b位, << 是左移.
- 数组的大小可以当乘法来用, 布尔类型的占用一个字节
eg: bool a[2][3]; sizeof(a) = 6