面试100题:12.不使用乘法等关键字求和
来源:互联网 发布:linux关闭防火墙状态 编辑:程序博客网 时间:2024/05/06 09:53
题目:
求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
分析:
解一:利用类的构造函数进行加法运算,创建一个数组,长度为n。
- /*Title: 12.不使用乘法等关键字求和: 解一
- Author: gocode
- Date: 2012-10-15*/
- #include <iostream>
- using namespace std;
- class SumN
- {
- public:
- SumN()
- {
- n++;
- sum+=n;
- }
- void sumResult();
- private:
- static int sum;
- static int n;
- };
- int SumN::sum=0;
- int SumN::n=0;
- void SumN::sumResult()
- {
- cout<<sum<<endl;
- }
- int main()
- {
- SumN *pSum=new SumN[100];
- pSum->sumResult();
- delete pSum;
- system("pause");
- return 0;
- }
解二:利用模板元编程
- /*Title: 12.不使用乘法等关键字求和: 解二
- Author: gocode
- Date: 2012-10-15*/
- #include <iostream>
- using namespace std;
- template <unsigned N>
- class C_Num
- {
- public:
- enum { m_Value = N + C_Num<N - 1>::m_Value};
- };
- template< >
- class C_Num<1>
- {
- public:
- enum { m_Value = 1};
- };
- int main()
- {
- cout << C_Num<100>::m_Value << endl;
- return 0;
- }
解三:利用递归
- /*Title: 12.不使用乘法等关键字求和: 解三
- Author: gocode
- Date: 2012-10-15*/
- #include <iostream>;
- using namespace std;
- typedef int (*PF_Fun) (int nValue);
- PF_Fun paFun[2];
- int GetSum1(int nValue)
- {
- return 0;
- }
- int GetSum2(int nValue)
- {
- return (*paFun[!!nValue])(nValue - 1) + nValue;
- }
- int GetValue2(int nValue)
- {
- paFun[0] = GetSum1;
- paFun[1] = GetSum2;
- int nSum = GetSum2(nValue);
- return nSum;
- }
- int main()
- {
- cout << GetValue2(100) << endl;
- system("pause");
- return 0;
- }
0 0
- 面试100题:12.不使用乘法等关键字求和
- 面试100题:12.不使用乘法等关键字求和
- 不使用 if、for 等逻辑关键字实现累加求和
- 剑指offer---不使用循环条件判断等实现求和
- 飘逸的python - 不使用关键字,求和1+2+…+n
- Java面试01--static、abstract等关键字
- 1095 乘法数列求和
- 高位数求和不使用BigDecimal
- 不使用加减乘除对两个整数求和
- 微软等面试100题第一题
- 微软等面试经典100题
- 微软等数据结构+算法面试100题
- 微软等面试100题答案精选
- 微软等面试100题答案精选
- 微软等数据结构+算法面试 100 题
- 微软等面试100题系列 - 41
- 微软公司等数据结构+算法面试100题
- 微软等数据结构+算法面试100题
- Android 中 ListView 分页加载数据
- 1001. A + B for Matrices
- ReportBuiler for Delphi 7 ~ XE 5 v15.03
- 如果当你使用POI从Excel中删除Row,请留意
- s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
- 面试100题:12.不使用乘法等关键字求和
- JavaScript 文档对象模型(DOM)
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 黑马程序员——匿名类的学习总结
- 面试100题:11.求二叉树中节点的最大距离
- C语言之位操作的作用及应用
- 情商高的12种表现,您有几种?
- 抽象类和接口的差别
- 面试100题:10.翻转句子中单词的顺序