美文网首页
计算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