CS-Notes/notes/64. 求 1+2+3+...+n.md
2019-11-02 12:07:41 +08:00

31 lines
1.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 64. 1+2+3+...+n
[NowCoder](https://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1?tpId=13&tqId=11200&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
## 题目描述
要求不能使用乘除法forwhileifelseswitchcase 等关键字及条件判断语句 A ? B : C
## 解题思路
使用递归解法最重要的是指定返回条件但是本题无法直接使用 if 语句来指定返回条件
条件与 && 具有短路原则即在第一个条件语句为 false 的情况下不会去执行第二个条件语句利用这一特性将递归的返回条件取非然后作为 && 的第一个条件语句递归的主体转换为第二个条件语句那么当递归的返回条件为 true 的情况下就不会执行递归的主体部分递归返回
本题的递归返回条件为 n <= 0取非后就是 n > 0递归的主体部分为 sum += Sum_Solution(n - 1)转换为条件语句后就是 (sum += Sum_Solution(n - 1)) > 0
```java
public int Sum_Solution(int n) {
int sum = n;
boolean b = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0);
return sum;
}
```
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-1.png"></img></div>