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;
}


 

目录
相关文章
|
消息中间件 数据采集 监控
ELK搭建(五):linux系统日志监控平台搭建
现在的生产系统多使用linux系统,在实际生产过程中我们除了需要监控一些业务日志之外,有时也需要监控linux系统本身的日志,来帮助我们进行一些排错和判断。那么这一期,我们就针对linux系统日志监控平台的搭建来进行讲解 与往期一样,我们针对实际搭建教程更多是快速搭建为主,不做过多的原理性讲解,这一类讲解我们放到后期单独开几期博客来探讨。
1701 0
ELK搭建(五):linux系统日志监控平台搭建
|
11月前
|
人工智能 边缘计算 算法
2025年12月数字人厂商综合实力榜单发布,揭示产业三大演进方向
2025年数字人产业告别野蛮生长,形成头部领跑、腰部深耕、创新突破的格局。权威榜单显示,技术、落地、商业与生态成核心竞争力,行业集中度提升,前十大厂商市占超65%。世优科技等凭借全栈自研与场景融合优势领先,政务、文旅、教育等垂直领域涌现特色厂商。技术迈向“形神兼备”,应用从示范走向刚需,生态标准化加速推进,数字人正深度融入千行百业,成为降本增效与价值共创的新引擎。
680 1
|
10月前
|
人工智能 架构师 安全
后大模型时代:从 Model 到 Agent,下一代企业级应用架构演进指南
摘要:当大模型(LLM)的能力逐渐同质化,基于 Agent(智能体)的应用架构正在成为新的技术护城河。本文将探讨 Agent 如何重构软件开发范式,并梳理开发者在这一转型过程中所需的关键技术栈。
952 2
MATLAB在风险管理中的应用:从VaR计算到压力测试
本文介绍如何使用MATLAB进行风险管理,涵盖风险度量(如VaR)、压力测试和风险分解。通过历史模拟法、参数法和蒙特卡洛模拟法计算VaR,评估投资组合在极端市场条件下的表现,并通过边际VaR和成分VaR识别风险来源。结合具体案例和代码实现,帮助读者掌握MATLAB在风险管理中的应用,确保投资组合的稳健性。
如何使用控制台群发短信 | 阿里云短信服务
操作指南|通过控制台群发短信
1715 14
|
数据可视化 数据挖掘 项目管理
2024年办公协同软件最新排行榜:五款协同利器全方位测评
在数字化办公时代,协同软件成为提升工作效率、优化沟通和简化管理的重要工具。本文从功能特点、上手难度、性价比等角度,对五款热门办公协同软件——板栗看板、飞书、钉钉、Notion 和 Microsoft Teams 进行了深度测评,帮助企业和团队找到最适合自身需求的工具。
1625 3
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
1609 0
|
数据库
sqlmap过滤连续空格的方法(一)
sqlmap过滤连续空格的方法(一)
|
Java 应用服务中间件 测试技术
PHP和Java在性能上的差异有哪些?
【7月更文挑战第2天】PHP和Java在性能上的差异有哪些?
1452 0
|
人工智能 云计算 开发者
【云小宝】
【云小宝】 历经5天时间,今天终于和【太极版】云小宝见面了。[比心][加油]
2640 1
【云小宝】