64 求1+2+3+...+n(发散思维能力 )

题目描述:

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

 

解题思路:

1)利用&&的短路特性

2)  利用sizeof特性,使用公式n(n+1)/2

3)利用构造函数求解:

         先定义一个类型,然后创建n个该类型的实例,那么这个类型的构造函数将被调用n次。将累加的代码放到构造函数中。

4)利用虚函数求解: 

 

测试用例:

1) 边界值:(输入0和1)

2) 功能测试(n=5,n=10)

 

代码:

1)&&的短路特性 复杂度:O(n)

 1 1 class Solution {
 2 2 public:
 3 3     int Sum_Solution(int n) {
 4 4         int ans = n;
 5 5         n && (ans = n + Sum_Solution(n - 1)); //&&即逻辑与,拥有短路特性。(&&左侧为false则右侧的表达式不执行)
 6 6         return ans;
 7 7     }
 8 8 };
 9 
10 Code01
View Code

缺点:递归的层数不能太深<3000


 2)sizeof特性,使用公式n(n+1)/2

1 1 class Solution {
2 2 public:
3 3     int Sum_Solution(int n) {
4 4         bool a[n][n+1]; //不行:int(四字节),short(2字节)
5 5         //char a[n][n+1]; //可以:char(1字节)
6 6         return sizeof(a)>>1; //右移等价于除以2
7 7     }
8 8 };
Code02

3)  利用构造函数

 1 class Unit{
 2     public:
 3         Unit(){++N;Sum+=N;}
 4         static void reset(){N=0;Sum=0;} //static
 5         static unsigned int GetSum(){return Sum;} //static
 6     private:
 7         static unsigned int N;
 8         static unsigned int Sum;
 9 };
10 
11 unsigned int Unit::N = 0; //一般在类外初始化(类内也不会报错)
12 unsigned int Unit::Sum = 0; //类外不用在加static
13 
14 class Solution {
15 public:
16     int Sum_Solution(int n) {
17         Unit::reset();
18         Unit *p = new Unit[n];
19         int res = Unit::GetSum();
20         delete[] p;
21         p=nullptr;
22         return res; //return Unit::GetSum();
23     }
24 };
Code03

注意:

「1」局部static对象在第一次使用前分配,在程序结束是销毁。并不是在局部作用域结束是销毁。

「2」动态分配的对象的生存期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。(即必须被显示销毁!!局部作用域并不会自动销毁

「3」静态内存:用来保护局部static对象、类static数据成员、以及定义在任何函数外的变量。编译器创建,程序结束时销毁(不受局部作用域控制)。

          栈内存:用于保存定义在函数内的非static对象。仅在定义的程序运行的时候才存在(局部作用域)。

          自由空间(堆内存):存储动态分配的对象。必须显示销毁。         

「4」new默认情况下是默认初始化,即内置对象或组合型对象的值是为定义的,而类类型对象将使用默认构造函数进行初始化:

    string *ps = new string; //初始化为空的字符串

               int * pi = new int; //pi指向一个未初始化的int         可使用值初始化:int * pi = new int(); z值初始化为0。  也可以传入参数:int * pi = new int(1024);

               或列表初始化 vector<int> *pv = new vector<int>{0,1,2,3,4,5,6,7,8,9};

「5」delete接受对象为指针类型,

         当其释放一块非new创建的内存,或者将相同的指针(指向同一块内存的指针)释放多次,其行为是未定义的。

「6」当程序用光了可用内存,new表达式会失败,默认情况抛出std::bad_alloc异常。

         阻止抛出异常: int *p = new (nothrow) int; //如果失败返回空指针。


4) 利用虚函数求解

 

 

 

基础知识补充:

 

转载于:https://www.cnblogs.com/GuoXinxin/p/9960740.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cell Reports:黄梓芮等揭示大脑皮层中通往意识的“大门”

来源&#xff1a;小柯生命北京时间2021年5月4日晚23时&#xff0c;Cell Reports在线发表美国密歇根大学一项关于前脑岛在大脑网络切换和意识通达中关键门控作用的研究——“Anterior insula regulates brain network transitions that gate conscious access”。此研究由密歇根…

DeepMind强化学习新研究:更快的知识学习,更强的环境适应

来源&#xff1a;AI科技评论编译&#xff1a;Mr Bear校对&#xff1a;维克多DeepMind官方博客在一篇文章“Fast reinforcement learning through the composition of behaviours”中&#xff0c;针对强化学习中的“从头学习”问题给予了解决方案。文章中表示&#xff0c;人类处…

为什么AI无法解决一般智能问题?

来源&#xff1a;学术头条我们什么时候才能拥有在各方面能够模仿人脑的人工智能&#xff1f;专家们对这个问题意见不一。但大家都同意的是&#xff0c;目前的人工智能系统与人类的智力相去甚远。直接表现是&#xff1a;AI只在特定任务中表现优异&#xff0c;无法将其能力扩展到…

ADT操作实例

ps.1.put(rank,value) 把当前rank的元素的数值修改 2.get(rank)获取rank的元素 3.remove(value)把向量中value剔除掉 4.size()返回元素个数 5.disordered()检测向量的有序性&#xff0c;是否存在紧邻的逆序对&#xff0c;只要返回的数值不是0&#xff0c;说明它尚未构成有序的序…

群雄逐鹿,谁会赢得自动驾驶之战?

来源&#xff1a;AI前线作者 | Timothy B.Lee译者 | 王强策划 | 刘燕自动驾驶技术行业今天正处于一种奇怪的状态。过去多年来&#xff0c;整个行业已经在自动驾驶技术上投入了庞大的资金&#xff0c;其中许多公司都拥有了看起来跑得不错的自动驾驶汽车原型。但据我所知&#xf…

ActiveMQ反序列化漏洞(CVE-2015-5254)复现

0x00 漏洞前言 Apache ActiveMQ是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息服务&#xff0c;集群&#xff0c;Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞&#xff0c;该漏洞源于…

阿里最新研究试用因果推理方法让视觉AI更智能,入选CVPR 2021

来源:AI前线学过人类照片和鱼类照片的 AI&#xff0c;第一次见到美人鱼的照片会作何反应&#xff1f;人脸和鱼身它都很熟悉&#xff0c;但它无法想象一个从没见过的事物。近期&#xff0c;阿里巴巴达摩院将因果推理方法引入计算机视觉领域&#xff0c;尝试克服机器学习方法的缺…

博客文章排版学习

一、序言 第一次写博客觉得文章的排版十分重要&#xff0c;查阅了几篇博文&#xff0c;觉得Leo_wlCnBlogs的文章让我获益良多&#xff0c;所以我做出了总结&#xff0c;方便自己学习复习。 博文写出来排版好了才让人看得舒服&#xff0c;才有动力看下去&#xff0c;之前百度查资…

《神经元》发表脑智卓越中心关于灵活分类决策神经环路机制的研究成果

来源&#xff1a; 脑科学与智能技术卓越创新中心2021年5月5日&#xff0c;《Neuron》期刊在线发表了题为《基于任务结构信息的灵活感知抉择神经环路机制》的研究论文&#xff0c;该研究由中国科学院脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff09;、上海脑…

第九集 生死穿越风火山,感受尘世间轮回

在五道梁的一夜&#xff0c;终于可以不用睡帐篷。呼吸依然不顺&#xff0c;但比昆仑山口好多了&#xff0c;晚上也睡得安稳。 一早与开达吃完早餐&#xff0c;补充干粮&#xff0c;策马上路。早上阳光明媚&#xff0c;为弥补前三天落下的行程&#xff0c;计划加班骑行148公里至…

扩展图神经网络:暴力堆叠模型深度并不可取

来源&#xff1a;AI科技评论目前&#xff0c;阻碍图神经网络在业界大规模应用的挑战之一是&#xff1a;图神经网络很难被扩展到 Twitter 的用户关注关系图这类大型图上。节点之间的相互依赖关系使我们很难将损失函数分解为各个独立节点的影响。在本文中&#xff0c;我们介绍了T…

IBM 揭晓全球第一项 2纳米芯片技术,为半导体领域实现重大突破

来源&#xff1a;IBM中国这是芯片行业发展过程中的一个里程碑&#xff0c;将在芯片性能和能源效率方面实现飞跃。纽约州奥尔巴尼 — 2021年 5月 6日&#xff1a;IBM&#xff08;纽约证券交易所&#xff1a;IBM&#xff09;宣布&#xff0c;IBM 已成功研制出全球首款采用 2纳米 …

SpringCloud源码分析(一)--客户端搭建

一、前言 上一节的注册中心搭建完成了&#xff0c;本节开始搭建客户端&#xff0c;其实对于springcloud的Eureka注册中心而言&#xff0c;他本身就是服务端也是客户端&#xff0c;我们上节待见服务端注册中心的时候&#xff0c;已经通过配置来设置其不向自己注册&#xff0c;和…

【深度干货】强化学习应用简述

来源&#xff1a;海豚数据科学实验室 强化学习 (reinforcement learning) 经过了几十年的研发&#xff0c;在一直稳定发展&#xff0c;最近取得了很多傲人的成果&#xff0c;后面会有越来越好的进展。强化学习广泛应用于科学、工程、艺术等领域。下面简单列举一些强化学习的成…

柳进军 | 城市大脑的逻辑模型

来源&#xff1a;人民智库近年来&#xff0c;在人工智能、大数据、云计算等新技术发展以及国家新基建等政策的双重推动下&#xff0c;各地政府普遍将“城市大脑”建设纳入了城市发展建设计划&#xff0c;“城市大脑”相关的实践活动也在蓬勃开展&#xff0c;“城市大脑”已经成…

【综述专栏】神经网络的可解释性综述

来源&#xff1a;知乎作者&#xff1a;知乎—机器学习小谈地址&#xff1a;https://zhuanlan.zhihu.com/p/368755357本文以 A Survey on Neural Network Interpretability 读后感为主&#xff0c;加上自身的补充&#xff0c;浅谈神经网络的可解释性。论文&#xff1a;https://a…

吴军:既能得诺贝尔奖,又能生产高科技产品,美国的科研机制是如何运行的?...

来源&#xff1a;大数据文摘范内瓦布什&#xff08;Vannevar Bush&#xff09;一生大部分时间供职于麻省理工学院&#xff0c;是这所世界排名第一的理工科大学最引以为傲的人之一。2016年&#xff0c;我访问麻省理工的媒体实验室。由于我到的时间早了一点&#xff0c;伊藤主任还…

机器学习核心概念完全解析(建议收藏)

来源&#xff1a;机器学习研究组订阅刚接触机器学习框架 TensorFlow 的新手们&#xff0c;这篇由 Google 官方出品的常用术语词汇表&#xff0c;一定是你必不可少的入门资料&#xff01;本术语表列出了基本的机器学习术语和 TensorFlow 专用术语的定义&#xff0c;希望能帮助您…

科学研究发现:说谎,是儿童成长的里程碑

来源&#xff1a;心灵成长家园&#xff08;ID&#xff1a;xinling_JY&#xff09;科学研究发现&#xff1a;说谎&#xff0c;是儿童成长的里程碑。和成年人的谎言不同&#xff0c;小朋友的谎言&#xff0c;是他们获得一类重要心智能力的标志。许多研究发现&#xff0c;越早学会…

非 GUI 模式运行 JMeter 压力测试

非 GUI 模式&#xff0c;即命令行模式&#xff0c;运行 JMeter 测试脚本能够大大缩减所需要的系统资源。 使用命令&#xff1a;jmeter -n -t <testplan filename> -l <listener filename> -n&#xff1a;非GUI模式 -t&#xff1a;需要执行的脚本文件名&#xff0c;…