《剑指offer》求1+2+3+...+n
来源:互联网 发布:渭南网络电视台 编辑:程序博客网 时间:2024/04/30 01:18
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
这道题初看起来貌似并想不到什么太好的方法,但是如果我们熟悉C++的特性,或者对递归比较了解的话,还是能找到一些解决的方法
1.使用递归
class Solution{public:int Sum_Solution(int n){int sum = n;bool flag = (n>0) && ((sum+=Sum_Solution(n-1))>0);return sum;}};
2.构造函数
class Temp{ public: Temp() { ++N; Sum+=N; } static void Reset() { N = Sum = 0; } static int GetSum() { return Sum; } private: static int N; static int Sum;}; int Temp::N = 0;int Temp::Sum = 0; class Solution{ public: int Sum_Solution(int n) { Temp::Reset(); Temp *a = new Temp[n]; delete []a; a = NULL; return Temp::GetSum(); }};
3.虚函数
class A;A* Array[2]; class A{ public: virtual int Sum(int n) { return 0; }}; class B:public A{ public: virtual int Sum(int n) { return Array[!!n]->Sum(n-1)+n; }}; class Solution{ public: int Sum_Solution(int n) { A a; B b; Array[0] = &a; Array[1] = &b; return Array[1]->Sum(n); }};
0 0
- 《剑指offer》求1+2+3+...+n
- 剑指offer--求1+2+3+...+n
- 剑指offer-求1+2+3+...+n
- 剑指offer:求1+2+3+...+n
- 《剑指offer》-求1+2+3+...+n
- 剑指Offer: 求1+2+3+...+n
- 【剑指Offer】求1+2+3+...+n
- 剑指offer---求1+2+3+...+n
- 剑指offer 求1+2+3+...+n
- 剑指offer:求1+2+3+...+n
- 剑指Offer-求1+2+3+...+n
- 剑指offer-求1+2+3+...+n
- 求1+2+3+...+n 剑指offer
- 剑指offer:求1+2+3+...+n
- 求1+2+3+...+n(剑指Offer)
- 剑指offer 求1+2+3+...+n
- 剑指offer 求1+2+3+...+n
- 剑指offer-求1+2+3+...+n
- poj2594:Treasure Exploration
- c++迭代器详解(一):back_inserter, front_inserter,inserter
- 单链表(七)——判断两链表是否交叉
- 斯坦福Developing iOS 8 Apps学习笔记(四)
- linux 安装flash
- 《剑指offer》求1+2+3+...+n
- Eclipse关联java源代码
- 【软考视频基础知识】——数据结构
- PS CS6中如何制作简易GIF动画图片
- 2015.9.13
- 操作系统进程间通信的方式
- MySQL触发器
- 理解Semaphore和Mutex
- java swing版哈佛曼压缩软件