美文网首页
计算1+2+...+n

计算1+2+...+n

作者: 小码弟 | 来源:发表于2018-10-30 08:56 被阅读0次

    编写函数求1+2+...+n的和,要求不能使用乘除、if-else、for、while、switch和三目运算符

    思路:

    1. 如果能用乘除的话,直接用求和公式就解了,但是这里不给用。不能用循环,能不能用递归呢?递归不就是自己循环调用自己吗,考虑用递归,但是递归需要用if做终止条件,似乎不行。但是我们可以利用逻辑判断的短路特性间接实现递归的出口条件。
    2. 另一种解法是搭配使用静态变量和构造函数。我们知道每次创建一个对象,都自动调用一次构造函数。因此可以在构造函数里计数并累加和。
    int Sum(int n)
    {
      int i = 0;
      (n>1)&&(i = Sum(n-1)+n);// &&短路性质
      return i;
    }
    // *************************** //
    
    class SumClass
    {
      private:
        static int i;
        static int sum;
      public:
        SumClass(){i++; sum += i;}
        static int getSum(){return sum;}
    }
    
    int SumClass::i = 0;
    int SumClass::sum = 0;
    int Sum(int n)
    {
      Sum* p = new Sum[n];
      int s = SumClass::getSum();
      delete[] p;
      p = NULL;
      return s;
    }
    

    相关文章

      网友评论

          本文标题:计算1+2+...+n

          本文链接:https://www.haomeiwen.com/subject/snywtqtx.html