面试题 64. 求 1+2+…+n
题目描述
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3 输出: 6
示例 2:
输入: n = 9 输出: 45
限制:
1 <= n <= 10000
解法
方法一
思考
题目禁止乘除与循环判断,等差公式与普通循环都不能直接写。逻辑与运算具有短路性质:当 \(n\) 为 \(0\) 时不再递归。
因此写成 \(n\) 与 \(n+sum(n-1)\) 的合取,递归累加至 \(0\)。
1 2 3 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 | |