C++版 - 剑指offer 面试题46:求1+2+3+...+n(不能使用乘除法、循环语句及条件判断语句) 题解

剑指offer 面试题: 求1+2+3+...+n

 

提交网址: http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1?tpId=13&tqId=11200

 

参与人数:2426  时间限制:1秒  空间限制:32768K

 

题目描述

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

 

 

分析:

方法1: 短路与&&、短路或|| + 递归

不能用判断语句的关键字,但是能想到短路与&&、短路或||的特性:如果 || 前面一个为真,则||后面的不会再执行,如果 && 前面一个为假,则&&后面的不会再执行。

 

AC代码:

#include 
using namespace std;
class Solution {
public:
    int Sum_Solution(int n) {
        int res=n;
        res&&(res += Sum_Solution(n-1));
        return res;  // n=0时,累加和为0
    }
};
// 以下为测试部分
/* 
int main()
{
	Solution sol;
	cout<

你可能感兴趣的:(剑指offer解题报告,数据结构与算法的C++实现)