本文主要是介绍求1+2+3+...+n要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思想:
①通常我们可以通过循环的方法创造出1~n的每个数字,再累加就可以,因为不能使用循环,所以需要先创建出1到n的所有数字,通过构造函数的特性,每创建一个对象就要调用一次构造函数,在构造函数中记录构造函数调用的次数,再用一个值进行加法。
②通过&&运算符,代替循环的方式给出递归出口。
①
class Sum{
public:Sum(){_count++;_sum+=_count;}Sum(const Sum& s){_count++;}~Sum(){_count--;}static int Getsum(){return _sum;}static void Setsum(){_count = 0;_sum = 0;}private:static int _count;static int _sum;
};
int Sum::_count = 0;
int Sum::_sum = 0;
class Solution {
public:int Sum_Solution(int n) {Sum::Setsum();Sum s[n];return Sum::Getsum();}
};
②
class Solution {
public:int Sum_Solution(int n) {n && (n = Sum_Solution(n-1)+n);return n;}
};
这篇关于求1+2+3+...+n要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!