剑指offer: 求1+2+...+n

题目描述:

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

 

思路分析:

由于题目的限制条件很多。同样想到是用位运算来解决,递归调用函数做加法。但是由于不能用条件判断,无法给定停止的条件,查了相关题解,才发现&&运算是先判断第一个条件,当为假时就不进行后续的条件判断,因此可以利用这个性质来完成终止条件的判断。代码简单,只有一行。

 

代码:

1 class Solution {
2 public:
3     int Sum_Solution(int n) {
4         int sum;
5         (sum = n) && (sum += Sum_Solution(n-1));
6         return sum;
7     }
8 };

 

posted @ 2019-06-18 22:11  Fzu_LJ  阅读(98)  评论(0编辑  收藏  举报