求解1+2+3+...+n,要求不能使用乘除法、while、for、if 、else、switch、case等关键字
2017-07-14 09:52
573 查看
方法一:利用递归以及&&的短路原理
方法二:利用构造函数求解
方法三:利用虚函数求解
方法四:利用函数指针求解
方法五:利用模板类型求解
int Sum(int num, int& sum) { num&&Sum(num-1,sum);//递归跳出条件,当num为假时,无需判断后序语句,返回sum+=n return sum +=num; } int main() { int num= 0; int sum = 0; cin>>num; cout << Sum(num, sum) << endl; system("pause"); return 0; }
方法二:利用构造函数求解
class Sum { public: Sum() { ++n; sum += n; } static void Reset() { n = 0; sum = 0; } static unsigned int GetSum() { return sum; } private: static unsigned int n; static unsigned int sum; }; unsigned int Sum::n = 0; unsigned int Sum::sum = 0; unsigned int Sum_Solution(unsigned int n) { Sum::Reset(); Sum* a = new Sum ; delete[]a; a = NULL; return Sum::GetSum(); } int main() { int n = 3; cout << Sum_Solution(n) << endl; system("pause"); return 0; }
方法三:利用虚函数求解
class A; A* Array[2]; class A { public: virtual unsigned int Sum(unsigned int n) { return 0; } }; class B :public A { public: virtual unsigned int Sum(unsigned int n) { return Array[!!n]->Sum(n - 1) + n; } }; int Sum_Solution(int n) { A a; B b; Array[0] = &a; Array[1] = &b; int value = Array[1]->Sum(n); return value; }
方法四:利用函数指针求解
typedef unsigned int(*fun)(unsigned int); unsigned int Solution(unsigned int n) { return 0; } unsigned int Sum_Solution(unsigned int n) { static fun f[2] = { Solution, Sum_Solution }; return n + f[!!n](n - 1); }
方法五:利用模板类型求解
template <unsigned int n> struct Sum_Solution { enum Value { N = Sum_Solution<n-1>::N+n; }; }; template<> struct Sum_Solution<1> { enum Value { N = 1 }; };
相关文章推荐
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 【九度1506】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字 以及条件判断语句(A?B:C)
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+…+n.要求不能使用乘除法、for、while、if、else、switch、case等关键字
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
- C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)
- 智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 输入一个大于1的正整数N,求1+2+。。。+N 要求是不能使用乘除法,for,while,if,else,switch,case等关键字以及A?B:C
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现