面试题64. 求1+2+…+n(C++)

题目详情 

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

 

示例 1:
输入:
n = 3
输出: 6


示例 2:
输入:
n = 9
输出: 45

 

限制:

  • 1 <= n <= 10000


——题目难度:中等


 




这道题如果使用递归法的话,其实就是最后一步当n=1或n=0的时候会有问题,因为不能使用条件判断语句,所以我们得 想方设法来解决n=1或n=0时返回1或0。

这时候就可以充分利用&&(逻辑与)的性质。
表达式1&&表达式2 
1.当表达式1为假时,表达式2不会被执行,返回的就是false
2.当表达式1为真时,表达式2会被执行,返回的就是表达式2的bool值(真或假)

这样就可以使用&&的这个性质对n=0的情况做出正确的处理。

-下面代码

class Solution {
public:
    int sumNums(int n) {
		n && (n += sumNums(n-1));
		return n;
    }
};

结果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章