题目描述

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

解题思路

短路计算调用递归。

class Solution {
public:int Sum_Solution(int n) {int ans=n;// &&在c++中如果前面为假则后面的不执行ans && (ans+=Sum_Solution(n-1));return ans;}
};

构造函数求解

// 构造函数求解
class Temp{
public:Temp(){n++;sum+=n;}static void reset() {n=0;sum=0;}static int getsum(){ return sum;}
private:static int n;static int sum;
};
int Temp::n=0;
int Temp::sum=0;
class Solution {
public:int Sum_Solution(int n) {Temp::reset();//调用N次Temp *a = new Temp[n];delete []a;a=NULL;return Temp::getsum();}
};

来自这里
构造函数主要用于为对象分配空间,进行初始化。构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质:
(1)构造函数的名字必须与类名相同
(2)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。
(3)构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。
(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。
(5)构造函数被声明为公有函数,但它不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。
析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:
(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号(~);
(2)析构函数没有参数,也没有返回值,而且不能重载。因此在一个类中只能有一个析构函数;
(3)当撤消对象时,编译系统会自动地调用析构函数。

// 虚函数求解
class A;
A *Array[2];class A{
public:virtual unsigned int SUM(unsigned int n){ return 0;}
};class B:public A{virtual unsigned int SUM(unsigned int n){ // !!n:n=0是为false,否则为truereturn Array[!!n]->SUM(n-1)+n;}
};class Solution {
public:int Sum_Solution(int n) {A a;B b;Array[0]=&a;Array[1]=&b;int value = Array[1]->SUM(n);return value;}
};

剑指offer:求1+2+3+...+n相关推荐

  1. 剑指offer 求1+2+3+...+n

    题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 本题考察点是递归和短路: public cla ...

  2. 剑指Offer——求1+2..+n的和

    1.题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 2.代码实现 public int Sum ...

  3. 剑指Offer——求1+2+3+...+n

    题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 题解 #include <iostream& ...

  4. 剑指offer 求第n个丑数

    方法一:超时 class Solution { public:     int GetUglyNumber_Solution(int index) {         if(index<=0) ...

  5. 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...

    弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉 ...

  6. 剑指offer之求两个数之和(不能使用四则运算)

    1 题目 剑指offer之求两个数之和(不能使用四则运算) 2 代码实现 #include<stdio.h>int add(int num1, int num2) {int sum1;in ...

  7. java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 0, 1, -, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字 ...

  8. LeetCode 剑指Offer 64.求1,2到n的和, 不使用循环/判断及乘除

    题目 剑指 Offer 64. 求1+2+-+n 求 1+2+-+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: ...

  9. 【LeetCode】剑指 Offer 64. 求1+2+…+n

    [LeetCode]剑指 Offer 64. 求1+2+-+n 文章目录 [LeetCode]剑指 Offer 64. 求1+2+-+n package offer;public class Solu ...

  10. 剑指offer——面试题46:求1+2+...+n

    剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...

最新文章

  1. 交叉熵损失(Cross Entropy Loss)计算过程
  2. Express app.get 进行路由 Route 设置
  3. 最简单的Angular Route hello world场景都跑不通的一个原因
  4. VS2010+matlab2012b环境下C++写MAT文件
  5. IIS解决 上传文件大小限制
  6. a33 linux内核启动网卡,a33核心板启动问题 - nevermore1981的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. java二维数组遍历排序,实现二维数组的按次序排序!!!
  8. Leetcode每日一题:198.house-robber(打家劫舍)
  9. ARM平台交叉编译valgrind
  10. 独热向量编码(one-hot encoding)原理详解与实现
  11. 微信小程序获取公众号文章列表及显示文章
  12. 【python游戏开发入门】pygame下载与安装教程
  13. 成功解决ValueError: Duplicate plugins for name projector
  14. Retrying connect to server: xxx.xxx.xxx.xxx:8032. Already tried 0 time(s)
  15. C++程序设计课程同步项目——循环结构程序设计项目任务二
  16. 【软件安装】WIN10 + Tensorflow1.12 C++接口 + Cmake编译失败 + Bazel编译成功 + C++接口
  17. Arcgis 10.2 中sde用oralc 做地理数据库。
  18. 品牌在社交电商领域的痛点
  19. 在2020年,向SpaceX学习如何建造太空飞船!
  20. 过期九年的牛奶你为什么还要喝?

热门文章

  1. Struts2——学习(5):页面跳转
  2. 戴尔/Dell R420服务器在 CentOS 5.6 64bit环境下安装网卡驱动
  3. 解决Jetty Maven Plugin:Please initialize the log4j system properly(转)
  4. python制作桑基图_Python制作桑基图
  5. Java基础与实践题库_Java程序设计基础与实践(题库版)
  6. ValueError: Classification metrics can‘t handle a mix of multiclass and unknown targets
  7. 用bert来训练quoras question pairs的代码仓
  8. 终于有人把分布式事物TCC讲明白了
  9. 科学成为时尚的可行办法
  10. python在print()中使用format的时候前面一定要有花括号{},否则值打印不上去