Day_2

简介:        下面是关于递归的例子:      递归找了个简单的1到n求和的例子,递归我的理解是每次做到快出结果的时候保存pc指针到堆栈中,去调用自己接着同样一件事情,只是参数变化了,也就是重复的函数操作,占用的内存比循环大的多,但是写法简单。

       下面是关于递归的例子:

      递归找了个简单的1到n求和的例子,递归我的理解是每次做到快出结果的时候保存pc指针到堆栈中,去调用自己接着同样一件事情,只是参数变化了,也就是重复的函数操作,占用的内存比循环大的多,但是写法简单。昨天写的find查找函数也可以写成递归形式,如下。

      递归的几个基本准则:

1)有一个基准情形,必须有些基准的情形,不然就不能使用递归!

2)不断推进,对于那些要被递归求解的情形,递归调用必须总能够朝着一个基准情形推进!  

3)设计法则,证明自己的递归各个情况下都是正确的。

void printOut(int n)
{
    if(n >= 10)
        printOut( n/10 );
    cout << (n % 10) << endl;
}

     

#include "main.h"
#include <iostream>
#include <cstdlib>
#include <assert.h>
using namespace std;
int calculate(int m)
{
    // Inlet parameters judgemant
    if(m < 0)
        return -1;
    if( m == 0)
        return 0;
    else
        return calculate(m-1) + m;
}

template<typename type>
int _find(type index, type array[], type length, type value)
{
    if( NULL == array || length == 0 )
        return -1;
    if( value == array[index])
        return index;
    return _find( index + 1, array, length, value );
}

void test()
{
    int array[10] = {1, 2, 3, 4};
    assert(3 == _find<int>(0, array, 10, 4));
}
int main()
{
    int sum;
    sum = calculate(10);
    cout << "sum: " << sum  << endl;
    test();
    return 0;
}


 

目录
相关文章
|
6月前
|
Linux 开发工具 iOS开发
16 个 Linux 最佳 Markdown 编辑器(1)
16 个 Linux 最佳 Markdown 编辑器(1)
134 1
|
SQL 存储 关系型数据库
PostgreSQL 通过SQL接口关闭、重启数据库
PostgreSQL 通过SQL接口关闭、重启数据库
2260 0
|
2月前
|
Java iOS开发 MacOS
8 种 Java- 内存溢出之四 -Metaspace
8 种 Java- 内存溢出之四 -Metaspace
|
9月前
|
存储 C语言
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
188 0
|
2月前
|
设计模式 供应链 数据可视化
DDD - 事件风暴从理论到落地
DDD - 事件风暴从理论到落地
113 1
|
3月前
|
存储 NoSQL 算法
Redis 的数据库和键管理
Redis 是一个键值对(key-value pair)的数据库服务器,其数据保存在 src/server.h/redisDb 中(网上很多帖子说在 redis.h 文件中,但是 redis 6.x版本目录中都没有这个文件。redisDb 结构应该在 server.h文件中)
72 0
Redis 的数据库和键管理
|
8月前
|
机器学习/深度学习 存储 前端开发
图像分类模型嵌入flask中开发PythonWeb项目
图像分类模型嵌入flask中开发PythonWeb项目
|
存储 算法 Java
GIF图像动态生成-JAVA后台生成
本文简要讲述了GIF图像知识,并且以JAVA技术为例,介绍了后台生成GIF的技术,并提供较详细的代码示例,希望对您有帮助。最后怀念因新冠感染去世的GIF的发明者,斯蒂芬•威尔海特。
340 0
GIF图像动态生成-JAVA后台生成
|
11月前
|
Oracle 前端开发 Java
java实现遍历树形菜单方法——设计思路【含源代码】
java实现遍历树形菜单方法——设计思路【含源代码】
287 0
|
Go 数据库
[Golang] gorm从版本1升到版本2,数据库close()方法被弃用,应该怎样去关闭数据库?
[Golang] gorm从版本1升到版本2,数据库close()方法被弃用,应该怎样去关闭数据库?