1+2+3+.........+N 的n种解法
来源:互联网 发布:access数据库64位下载 编辑:程序博客网 时间:2024/06/01 09:11
1+2+3+…+N的几种求法。
一、普通循环
这个就不多说了,普通循环得到答案
int GetValueByCir(size_t N)//普通循环{ int sum = 0; for (int idx = 1; idx <=N; idx++) { sum += idx; } return sum;}
二、递归解决
通过控制递归条件递归求解
int GetValueByRec(size_t N)//递归版{ if (N==1) return 1; else return N + GetValueByRec(N - 1);}
三、用构造函数
定义一个类,类有两个静态的成员,一个count,一个sum
并初始化为0
每当调用构造函数时,count++,然后用sum加上当前的count值
如此,当我们需要加到N时,便可以生成N个对象
然后获取类内部的sum值即可
count、sum为私有成员,所以定义一个静态成员函数来返回结果。
class Test{public: Test() { count++; sum += count; } static int getsum() { return sum; }public: static int count; static int sum;};int Test::count = 0;int Test::sum = 0;int main(){ Test *p = new Test[100]; delete[] p; cout << Test::getsum();}
四、用虚函数
这种做法也是递归的思想,创建一个数组,array[2];里面存放 基类对象的指针,和派生类对象的指针,用来多态调用虚函数。代码如下
class AA;AA* Array[2];//创建基类类型的指针数组class AA{public: virtual size_t Sum(size_t n) { return 0; }};class BB :public AA{public: virtual size_t Sum(size_t n) { return Array[!n]->Sum(n - 1) + n;//当n=0时,非0就是1,调用基类的虚函数,结束递归开始返回 }};int GetValueByVirtual(size_t n){ AA a; BB b; Array[0] = &b;//基类指针指向派生类对象,Array[0]的类型是AA* Array[1] = &a;//基类指针指向基类对象,Array[1]的类型是AA* int value = Array[0]->Sum(n); return value;}void TestGetValueByVirtual(){ cout << GetValueByVirtual(5) << endl;}int main(){ TestGetValueByVirtual();}
五、模板方式求
同理递归的方式。
template<size_t N>size_t F(){ return N + F<N - 1>();};template<>//特化N,1的时候结束递归size_t F<1>(){ return 1;};void TestGetValueByTemplate(){ cout << F<1000>() << endl;}
阅读全文
0 0
- 1+2+3+.........+N 的n种解法
- 求1+2+3+.....+n的几种解法
- 1+2+3+……+n的非循环解法
- 两种解法:找出n个自然数(1,2,3,……,n)中取r个数的组合。
- [LeetCode] 3Sum的O(N^2)解法
- 实现1+2+3...+n的不同解法
- N种皇后的两种解法
- 旅行商问题的n种解法
- 约瑟夫问题的N种解法
- n皇后问题的三种解法
- 旅行商问题的n种解法
- 旅行商问题的n种解法
- n^2+(n+1)^2 为完全平方数问题的解法与实现
- 1-2+3-4+5...+n各种解法
- S(n)=1+(1+2)+(1+2+3)+...(1+2+3+...n)多种解法
- N 皇后的递归解法
- n皇后问题的解法
- 算法运行时间1、logN、N、NlogN 、N^2、N^3、2^n之间的比较
- 关于在ArcGIS WebAppBuilder的widget开发中引入EasyUI的一些方法
- 开发必备---你应该知道的一些 ADB 命令
- 【Python】 sort、sorted高级排序技巧
- 浅谈Git(四)
- 使用pdfbox与itext设置pdf文件密码
- 1+2+3+.........+N 的n种解法
- 第一个Hello World在cmd中执行错误
- 应用程序方法数超过限制解决办法
- 二分搜索
- Fiddler抓包5-接口测试(Composer)
- Spring Boot Favicon配置
- 使用Haproxy搭建Web群集
- java 汉字与UTF-8十六进制编码 间相互转换方法
- Python学习路线规划