【剑指Offer-发散思维能力】面试题64:求1+2+...+n

题目描述

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

思路

1+2+...+n = n(n+1)/2,题目要求不能用乘法,但可以使用sizeof求布尔型(占一个字节)二维数组a[n][n+1]来求n(n+1),然后使用右移一位实现除2。代码如下:

class Solution {
public:
    int Sum_Solution(int n) {
        bool a[n][n+1];   
        return sizeof(a)>>1;
    }
};

由于使用变量定义了数组长度,该代码不是所有编译器都可以成功编译(gcc可以,vs不能)。

posted @ 2020-03-20 16:53  Flix  阅读(95)  评论(0编辑  收藏  举报