求1+2+...+n 【微软面试100题 第十二题】
2024-08-25 08:49:44
题目要求:
要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C)。
参考资料:剑指offer第46题
题目分析:
方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可;
方法2:利用函数指针;
方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880).
代码实现:
方法1代码:
#include <iostream> using namespace std; class Temp
{
public:
Temp(){++N;Sum += N;}
~Temp(){}
static void Reset(){N = ;Sum = ;}
static unsigned int getSum(){return Sum;}
private:
static unsigned int N;
static unsigned int Sum;
};
unsigned int Temp::N = ;
unsigned int Temp::Sum = ; int main(void)
{
int n = ; Temp::Reset();
Temp *a = new Temp[n];
delete []a;
a = NULL; cout << Temp::getSum() << endl; return ;
}
方法2代码:
#include <iostream> using namespace std; typedef unsigned int (*fun)(unsigned int);
unsigned int f2(unsigned int n); int main(void)
{
cout << f2() << endl;
return ;
}
unsigned int f1(unsigned int n)
{
return ;
}
unsigned int f2(unsigned int n)
{
fun f[] = {f1,f2}; return n+f[!!n](n-);
}
方法3代码:
#include <iostream> using namespace std; class A;
A *Array[]; class A
{
public:
virtual unsigned int Sum(unsigned int n)
{
return ;
}
};
class B:public A
{
public:
virtual unsigned int Sum(unsigned int n)
{
return Array[!!n]->Sum(n-)+n;
}
}; int sumSolution(int n); int main(void)
{
cout << sumSolution() << endl;
return ;
}
int sumSolution(int n)
{
A a;
B b;
Array[] = &a;
Array[] = &b; int value = Array[]->Sum(n);
return value;
}
最新文章
- 如何访问facebook (转)
- 点 击 直 接加我QQ的功能
- [转载]Java程序员使用的20几个大数据工具
- 20145207《Java程序设计》第6周学习总结
- Uva120 Stacks of Flapjacks 翻煎饼
- 关于NPC和NP-Hard问题
- linux设置语言编码
- you can Solve a Geometry Problem too(hdoj1086)
- CSS Select 标签取选中文本值
- [原创].NET 业务框架开发实战之七 业务层初步构想
- 测试BUG记录模板(供参考)
- Redis实战 - 3.Hash
- 关于使用阿里OSS服务搭建图床和使用PicGO上传图片到图床
- CodeForces - 95B(DFS)
- WPF触发器(Trigger) - DataTrigger
- AS 自定义 Gradle plugin 插件 案例 MD
- 探索未知种族之osg类生物---器官初始化二
- C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
- 7.计算N元等式[穷举]
- graphviz 程序生成多种类型图表详解
热门文章
- mkcert本地 HTTPS 加密证书生成工具
- centos 安装 rtmp nginx 视频流服务器
- ios 12 xcode10 新升级的编译报错libstdc++.6.0.9 Multiple commands produce
- HTTP 错误 500.0 - Internal Server Error
- 通过脚本批量添加AD用户
- Windows上PostgreSQL安装配置教程
- 抓取oracle建表语句及获取建表ddl语句
- 01_3_创建一个Servlet
- runtime比较全面的总结
- vue-awesome-swiper插件爬坑