面试题46:求1+2+...+n
来源:互联网 发布:mac暗影格斗2无限钻石 编辑:程序博客网 时间:2024/04/29 15:52
题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
解法一:利用构造函数求解
创建一个类,设置两个静态变量i和sum,并在构造函数中对i++,sum+=i,每次创建一个类的对象时都会调用构造函数,由于成员变量又是静态的,所以每次i都加1,sum用来保存每次加上i之后的总和,求1到N的总和就是创建N个对象,然后将sum的值返回即可。
#include <iostream>using namespace std;class Temp{public:Temp(){i++;sum+=i;}//初始化static void Reset(){i=0;sum=0;}//获取总和static int GetSum(){return sum;}private: //设置为static的static unsigned int i; static unsigned int sum;};unsigned int Temp::i=0;unsigned int Temp::sum=0;int GetSum(int n){ Temp::Reset();//创建N个对象Temp * temp=new Temp[n];delete[] temp;temp=NULL;return Temp::GetSum();}int main(){cout<<GetSum(3)<<endl;return 0;}
Java:
public class GetSum {/** * @param args */public static void main(String[] args) {System.out.println(getSum(5));}public static int getSum(int n){Sum[] sum=new Sum[n];for(int i=0;i<n;i++){sum[i]=new Sum();}return Sum.getSum();}public static class Sum{private static int i;private static int sum;public Sum(){i++;sum+=i;}public static int getSum(){return sum;}}}
解法二:利用虚函数求解
#include <iostream>using namespace std;class A;A* Array[2];//设置一个存储A对象的数组class A{public: virtual int Sum (int n) { //当n为0的时候返回0 return 0; }};class B: public A{public: virtual int Sum (int n) { //当n不为0的时候!!n=1,都调用B类中的sum函数 return Array[!!n]->Sum(n-1)+n; }};int solution2_Sum(int n){ A a; B b; Array[0] = &a; Array[1] = &b; int value = Array[1]->Sum(n); return value;}1.创建父类A,编写sum方法。
2.创建子类B,继承A并重写sum方法。
3.创建一个数组,下标为0的存储A类对象,下标为1存储B类对象
4.调用B类的sum方法并传入n,根据!!n判断n是否为0,不为0一直调用B的sum方法进行递归求和,当n为0的时候调用A的sum方法返回0
解法三:利用函数指针求解
0 0
- 面试题46:求1+2+...+n
- 面试题46:求1+2+...+n
- 面试题50:求1+2+...+n
- 面试题46. 求1+2+...+n
- 剑指Offer:面试题46 求1+2+...+n
- 剑指offer面试题46:求1+2+...+n
- 剑指offer-面试题46:求1+2+…+n
- 【面试题46】求1+2+3+...+n
- 剑指offer--面试题46:求1+2+3+...+n
- 剑指offer-面试题46-求1+2+3+...+n
- 面试题46—求1+2+3...+n
- 面试题46:求1+2+3+...+n
- 【剑指Offer】面试题46:求1+2+3+...+n
- 程序员面试题精选(8):求1+2+...+n
- 【Killua笔试面试题整理】求1+2+…+n
- 10. 微软面试题:题目:求1+2+…+n,
- 面试题47-求1+2+3+...+n
- 面试题:求1+2+....+n的和
- 专家详解伪造邮件攻击方法和防范措施
- 新闻发布系统——错误汇集
- 一位ACMer过来人的心得
- BootStrap Div居中
- Fresco源码解析 - 初始化过程分析
- 面试题46:求1+2+...+n
- poj1191
- Bootstrap Paginator分页插件+ajax 实现动态无刷新分页
- Posts Tagged 【tree && dfs】Sum Root to Leaf Numbers
- 5分钟打造bootstrap网页
- 学习新浪微博开发的OAuth2.0登陆协议(阶段一)
- leetcode Search Insert Position
- poj1061 青蛙的约会 扩展欧几里得
- 如何快速学习bootstrap3.3.2