程序结构程序设计(三) ——递归及递归举例
程序结构&&程序设计
程序结构&&程序设计(二)
递归,需要注意的是:
- 首先言明递归退出的条件(base case)
- 只需构造中间的某一步,或者某一个节点的处理逻辑,比如树(节点,节点左子树,节点右子树),剩下的交给递归程序的执行
1. 展开式拓展
- X ⇒ X + YF
- Y ⇒ FX - Y
对于这种情况,因为没有明确的递归(展开)终止的条件,所以需要自己定义,比如可以为递归函数接口增添一个新的计数变量,用以递归的退出。
初始的情况为,
- 0:FX;
- 1:FX+YF;(将 X 替换为 X+FY,而且使用宏替换的方式,不加括号)
- 2:FX+YF+FX-YF
void dragonCurve(const string& seed, int N) {if (N == 0) {cout << seed;return;}for (int i = 0; i < seed.size(); ++i) {if (seed[i] == 'X')dragonCurve("X+YF", N-1);else if (seed[i] == 'Y') dragonCurve("FX-Y", N-1);else cout << seed[i];}
}
- 这里的函数参数列表中的
int N
就是一种特意设计的标志变量,用以控制展开的次数;
程序结构程序设计(三) ——递归及递归举例相关推荐
- 程序结构程序设计(三)
程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...
- 程序结构程序设计(四)
程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...
- 程序结构程序设计(二)
程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...
- 实现二叉树的三种非递归遍历算法
[问题描述] 编写程序,实现二叉树的三种非递归遍历算法:先序非递归,中序非递归,后序非递归. [输入形式] 输入建树序列. [输出形式] 输出三种遍历序列. [样例输入] A B C # # # # ...
- c语言循环结构程序设计视频,第13讲:循环结构程序设计1
C语言是计算机科学及应用专业的一门重要的专业基础 课,也是全校各 个专业的公共必修课程.它既可以为其它专业课程奠定程序设计的基础,又可以作为其它专业课程的程序设计的工具. 通过本课程的学习,应掌握计算 ...
- python程序控制结构与分支的实验报告_Python程序设计实验报告三:分支结构程序设计...
实验三 分支结构程序设计 班级:物流191 姓名:倪绍磊 学号:3190505131 指导老师:修宇 日期:2020.4.3 ...
- c程序设计语言第五单元,(C语言程序设计基础课件)第五单元循环结构程序设计.pptx...
第五单元 循环结构程序设计;知识目标 了解goto语句以及用goto语句构成循环:掌握用while语句.do-while语句.for语句实现循环:熟悉循环语句的嵌套:掌握break语句和continu ...
- python数据结构与算法 20 递归和递归三定律
递归 本章目标 理解很多复杂问题,如果不用递归就很难解决,用递归也许非常简单 学会怎样进行递归编程 理解并应用递归三定律 理解递归也是一种迭代 建立一个问题的递归方法 理解递归在计算机系统内是如何进行 ...
- c语言循环程序模板,循环结构程序设计C语言程序
循环结构程序设计C语言程序Tag内容描述: 1.第5章 循环结构程序设计,C 语言程序设计,北京航空航天大学 交通科学与工程学院 徐国艳,2019/7/12,2,循环的基本概念 不同形式的循环控制 多 ...
最新文章
- 基于聚类的图像分割(Python)
- AWS副总裁Swami:现在是人工智能和机器学习的黄金时代
- 博客搭建攻略(三):创造收益
- Direct2D (25) : 将画笔线条所占用的区域转换为路径 - ID2D1Geometry.Widen()
- linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言
- Python 面试中可能会被问到的30个问题
- 图论--双连通E-DCC缩点模板
- 工科数学分析无穷级数总结
- c++ 不能分配给为0的数组_【嵌入式C】你有想过quot;数组下标quot;为何从0开始吗?...
- jar包是什么意思_为什么越来越多的开发者选择使用Spring Boot?
- Hadoop完全分布式安装Kafka
- L1L2 Regularization的原理
- 如何使用Movavi Video Editor编辑婚礼影片?
- 95. php 与 xml
- 图像分割(多分类)将mask变为one hot label
- python实现蒙特卡洛模拟_蒙特卡洛模拟(Python)深入教程
- eclipse 工具翻译插件安装
- 解决局域网文件共享“****无法复制,指定的网络名不可用”
- Foxmail的创建
- Redis的使用场景及其介绍
热门文章
- Java求一个数的质因数
- java static int count,static int bitCount(long i)
- Python基础——import(导入模块)
- CUDA精进之路(一):图像处理——大图像分块处理(包括求均值、最大值)
- OpenCV精进之路(零):core组件——绘制点、直线、几何图形
- Tosca new project Repository as MS SQL Server
- Eclipse中配置约束(DTD,XSD)
- 拆分SharePoint 2013 中CreatedModifiedInfo 的时间
- mysql的二级索引
- duilib入门简明教程 -- 前言(1)