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

使用函数指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//使用函数指针 递归加法
typedef (*fun)(int);
int func1(int n) {
return 0;
}
int func2(int n) {
fun f[2] = {func1, func2};
return n + f[(n != 0)](n - 1);
}
void function1() {
cout << func2(10) << endl;
}
//----->fun2 end

使用静态变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//----->fun2 start
//使用静态变量
class test {
static int N;
static int sum;
public :
test() {
sum += ++N;
}
大专栏  递归加法(day1)lass="function">static void reset() {
N = sum = 0;
}
static int getSum() {
return sum;
}
};
int test::N = 0;
int test::sum = 0;
void function2() {
test::reset();
test *p = new test[10];
cout << test::getSum() << endl;
delete[]p;
}
//--->fun2 end

使用虚函数的编译多态性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//----->fun3 start
//使用虚函数的编译多态性
class A {
public:
virtual int sum(int n) { return 0; };
};
class B : public A {
public:
int sum(int n) {
A a;
B b;
A *p[2] = {&a, &b};
return n + p[(n - 1 != 0)]->sum(n - 1);
}
};
void function3() {
B b;
cout << b.sum(10) << endl;
}
//----->fun3 end

源码github

递归加法(day1)的更多相关文章

  1. JavaScript 概览 更新时间2014-0414-0837

    一些概念 DOM(文档对象模型)是HTML和XML的应用程序接口(API).DOM Level1规划文档结构:DOM Level2扩展了对鼠标和用户界面事件等的支持:DOM Level3支持了XML1 ...

  2. n阶贝塞尔曲线绘制(C/C#)

    原文:n阶贝塞尔曲线绘制(C/C#) 贝塞尔是很经典的东西,轮子应该有很多的.求n阶贝塞尔曲线用到了 德卡斯特里奥算法(De Casteljau's Algorithm) 需要拷贝代码请直接使用本文最 ...

  3. day1 diff命令递归比较目录下的文件

    一.diff实战 (1)递归比较文件夹下所有的文件及目录的不同 diff --brief -Nr dir1/ dir2/                               Reference ...

  4. hdu1865 1sting (递归+大数加法)

    1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. 五一DAY1数论学习笔记

    by ruanxingzhi 整除性 如果a能把b除尽,也就是没有余数,则我们称a整除b,亦称b被a整除.(不是除以,是整除!!) 记作:\(a|b\) |这个竖杠就是整除符号 整除的性质 自反性 对 ...

  6. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  7. scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归

    package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println(" ...

  8. lecture7-序列模型及递归神经网络RNN

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  9. lecture7-序列模型及递归神经网络RNN(转载)

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

随机推荐

  1. FullPage.js中文帮助文档API

    fullPage.js的方法: 1. moveSectionUp() 功能:向上滚动一页. 2. moveSectionDown() 功能:向下滚动一页. 3. moveTo(section, sli ...

  2. HTML5之FileReader小结

    方法: 方法名 参数 描述 abort none 中断读取 readAsBinaryString file 将文件读取为二进制码 readAsDataURL file 将文件读取为 DataURL r ...

  3. matlab 启动图标

    matlab 启动图标 cat /usr/share/applications/Matlab.desktop [Desktop Entry] Type=Application Name=Matlab ...

  4. 使script.bin文件配置生效的驱动

    1.问题:在全志方案中如果需要设置上拉或者下拉模式,需要在script.bin(先转换为script.fex)中配置gpio口  如: 但是配置好后是不会生效的,需要写一个驱动来通过读取这个文件的gp ...

  5. RequestContextHolder getHttpServletRequest

    package me.zhengjie.common.utils; import org.springframework.web.context.request.RequestContextHolde ...

  6. Docker系列八: 数据卷

    什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射到本 ...

  7. unittest如何在循环遍历一条用例时生成多个测试结果

    引用自:http://blog.csdn.net/kaku21/article/details/42124593 参考网址:http://programmaticallyspeaking.com/te ...

  8. VisualStudioAddin2016Setup.rar

    本工具是用于Visual Studio 2010 /2012 的外接程序. 功能不太多,常用代码,引用管理等. 动态图: 下载地址: VisualStudioAddin2016Setup.rar

  9. python实现使用代码进行代理配置

    #!/usr/local/bin/python3.7 import urllib.request import urllib.parse # 创建handler handler = urllib.re ...

  10. RadixSort(基数排序)原理及C++代码实现

    基数排序是一种思想很值得学习的排序方法. 它突破了正常的排序思维:先排高位,如果高位相同再排次高位,直至最低.它的思想是利用稳定排序从低位开始排,最后再排最高位. 另外它用来划分的位不一定是一位一位的 ...