程序结构&&程序设计

程序结构&&程序设计(二)

递归,需要注意的是:

  • 首先言明递归退出的条件(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就是一种特意设计的标志变量,用以控制展开的次数;

程序结构程序设计(三) ——递归及递归举例相关推荐

  1. 程序结构程序设计(三)

    程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...

  2. 程序结构程序设计(四)

    程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...

  3. 程序结构程序设计(二)

    程序结构&&程序设计 程序结构&&程序设计(二) 程序结构&&程序设计(三) --递归 程序结构&&程序设计(三) 程序结构&& ...

  4. 实现二叉树的三种非递归遍历算法

    [问题描述] 编写程序,实现二叉树的三种非递归遍历算法:先序非递归,中序非递归,后序非递归. [输入形式] 输入建树序列. [输出形式] 输出三种遍历序列. [样例输入] A B C # # # # ...

  5. c语言循环结构程序设计视频,第13讲:循环结构程序设计1

    C语言是计算机科学及应用专业的一门重要的专业基础 课,也是全校各 个专业的公共必修课程.它既可以为其它专业课程奠定程序设计的基础,又可以作为其它专业课程的程序设计的工具. 通过本课程的学习,应掌握计算 ...

  6. python程序控制结构与分支的实验报告_Python程序设计实验报告三:分支结构程序设计...

    实验三   分支结构程序设计 班级:物流191             姓名:倪绍磊              学号:3190505131 指导老师:修宇           日期:2020.4.3 ...

  7. c程序设计语言第五单元,(C语言程序设计基础课件)第五单元循环结构程序设计.pptx...

    第五单元 循环结构程序设计;知识目标 了解goto语句以及用goto语句构成循环:掌握用while语句.do-while语句.for语句实现循环:熟悉循环语句的嵌套:掌握break语句和continu ...

  8. python数据结构与算法 20 递归和递归三定律

    递归 本章目标 理解很多复杂问题,如果不用递归就很难解决,用递归也许非常简单 学会怎样进行递归编程 理解并应用递归三定律 理解递归也是一种迭代 建立一个问题的递归方法 理解递归在计算机系统内是如何进行 ...

  9. c语言循环程序模板,循环结构程序设计C语言程序

    循环结构程序设计C语言程序Tag内容描述: 1.第5章 循环结构程序设计,C 语言程序设计,北京航空航天大学 交通科学与工程学院 徐国艳,2019/7/12,2,循环的基本概念 不同形式的循环控制 多 ...

最新文章

  1. 基于聚类的图像分割(Python)
  2. AWS副总裁Swami:现在是人工智能和机器学习的黄金时代
  3. 博客搭建攻略(三):创造收益
  4. Direct2D (25) : 将画笔线条所占用的区域转换为路径 - ID2D1Geometry.Widen()
  5. linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言
  6. Python 面试中可能会被问到的30个问题
  7. 图论--双连通E-DCC缩点模板
  8. 工科数学分析无穷级数总结
  9. c++ 不能分配给为0的数组_【嵌入式C】你有想过quot;数组下标quot;为何从0开始吗?...
  10. jar包是什么意思_为什么越来越多的开发者选择使用Spring Boot?
  11. Hadoop完全分布式安装Kafka
  12. L1L2 Regularization的原理
  13. 如何使用Movavi Video Editor编辑婚礼影片?
  14. 95. php 与 xml
  15. 图像分割(多分类)将mask变为one hot label
  16. python实现蒙特卡洛模拟_蒙特卡洛模拟(Python)深入教程
  17. eclipse 工具翻译插件安装
  18. 解决局域网文件共享“****无法复制,指定的网络名不可用”
  19. Foxmail的创建
  20. Redis的使用场景及其介绍

热门文章

  1. Java求一个数的质因数
  2. java static int count,static int bitCount(long i)
  3. Python基础——import(导入模块)
  4. CUDA精进之路(一):图像处理——大图像分块处理(包括求均值、最大值)
  5. OpenCV精进之路(零):core组件——绘制点、直线、几何图形
  6. Tosca new project Repository as MS SQL Server
  7. Eclipse中配置约束(DTD,XSD)
  8. 拆分SharePoint 2013 中CreatedModifiedInfo 的时间
  9. mysql的二级索引
  10. duilib入门简明教程 -- 前言(1)