46. 求1+2+3+...+n(C++实现)
题目:
求1+2+3+…+n,要求不能使用乘除法、for、while、else、switch、case等关键字及条件判断语句(A?B:C)。
代码实现:
1.构造函数法
class OneClass
{public:OneClass() {++m_objectTotalCount;m_totalSum += m_objectTotalCount;}static int GetTotalSume() { return m_totalSum; }private:static int m_objectTotalCount;static int m_totalSum;
};int OneClass::m_objectTotalCount = 0;
int OneClass::m_totalSum = 0;int GetTotalSumFrom1ToN(int n)
{if (n < 2) return -1;OneClass* pClass = new OneClass[n];delete[] pClass;return OneClass::GetTotalSume();
}
2.虚函数法
注意点:
n大于0时,!!n为true,将其转换成int型为1。
n为0时,!!为false,将其装换成int型为0。
class BaseClass
{public:virtual int GetResult(int n) { return 0; }
};BaseClass* datas[2];class DeriveClass : public BaseClass
{public:virtual int GetResult(int n) { return datas[!!n]->GetResult(n - 1) + n; }
};int GetTotalSumFrom1ToN(int n)
{datas[0] = new BaseClass;datas[1] = new DeriveClass;int totalSum = datas[1]->GetResult(n);delete datas[0];delete datas[1];return totalSum;
}
3.函数指针法
typedef int(*pFunc)(int);int TerminateFunc(int n)
{return 0;
}int SumFunc(int n)
{pFunc f[2] = { TerminateFunc, SumFunc };return n + f[!!n](n - 1);
}int GetTotalSumFrom1ToN(int n)
{return SumFunc(n);
}
46. 求1+2+3+...+n(C++实现)相关推荐
- python计算2的平方代码_Python练习实例46 | 求输入数字的平方,如果平方运算后小于 50 则退出。...
这个问题,其实有两种计算的思路,第一种就是需要对结果进行判断,无非就是两种结果,一种结果为真,一种结果为假,将这两种结果分别赋值给1和0,然后创建一个while循环即可. 小黄人.jpg 实现的方式大 ...
- 【剑指offer-Java版】46求 1 + 2 + 3 + ... + n
求 1 + 2 + - + n 但是不能使用判断,循环,分支,条件判断语句以及乘除运算 利用反射实现递归:目标就是构建一个递归出口 public class _Q46<T> {public ...
- 趣学python3(46)--求素数
import time import math start=time.perf_counter() print("2") for n in range(3,101): for i ...
- (剑指Offer)面试题46:求1+2+3+....+n
题目: 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字及条件判断语句(a?b:c). 思路: 1.构造函数 在类中定义静态成员变量N和 ...
- 2019 Python100道 面试 题,你会几道?
0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一IP短时间内访问的频率) 3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成 ...
- 数据的结构和运算(求和,最大和最小)
# 数据的基本定义 lst=np.array([[[1,2,3,4],[4,5,6,7]],[[7,8,9,10],[10,11,12,13]]]) print(lst) ''' [[[ 1 2 3 ...
- 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
各位程序猿: <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知 ...
- 前端常用60余种工具方法(下)
前端常用60余种工具方法(上) 41.将数字转换为大写金额 export const changeToChinese = (Num) => {//判断如果传递进来的不是字符的话转换为字符if ( ...
- 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
前言: 学习python的优点是什么?python语法非常优雅,简单易学 免费开源 跨平台,可以自由移植 可扩展,可嵌入性强 第三方库丰富 python的应用领域在系统编程中应用广泛,比如说shell ...
- 《剑指offer》面试题的Python实现
所属网站分类: 面试经典 > python 作者:gg 链接: http://www.pythonheidong.com/blog/article/464/ 来源:python黑洞网 www.p ...
最新文章
- 炸裂!这些大厂跪求的人才太牛了!
- FJWC 2019 游记
- 利用Android属性动画实现Banner的原理与实践
- 将list的内容转换成固定个数的分组字符串
- sqlmap 用户手册(续)
- Java中MVC详解以及优缺点总结
- 为什么java IO类不用基于继承的设计方案?
- WPF XMAL获取元素的父元素,子元素
- (四)DIH导入结构化数据
- mysql 勒索病毒怎么恢复_敲诈者病毒解密恢复 勒索病毒数据库恢复 数据库中病毒解密恢复...
- JWT实现接口双重认证,提供安全又不复杂的接口安全能力
- 杭州电子科技大学acm---2008
- STM32串口通信以寄存器地址和HAL两种方式实验Hello Windows!
- 自动(智能)驾驶系列|(一)简介与传感器
- EPSON晶振在电路设计中的接地问题分析解决
- OSG笔记一:在Win7、VS2010下配置OSG3.4
- UVM TLM1.0简单介绍
- WindowsServer教程一:SSMS连接数据库相关配置
- 分享两个CAD模型网站
- Python之三天打鱼两天晒网