复习回顾线性结构
线性数据结构是将数据项以某种线性的次序组织起来,我们学了栈、队列、双端队列以及列表的应用。
栈的次序是后进先出的,基本操作包括push、pop、isEmpty;队列的次序是先进先出的,基本操作包括enqueue、dequeue、isEmpty;双端队列可以同时具备栈和队列的功能,主要操作包括addFront、addRear、removeFront、removeRear、isEmpty。
书写表达式的方法有前缀、中缀、后缀三种,由于栈结构具有次序反转的特性,所以栈结构适合用于开发表达式求值和转换的算法。模拟系统可以通过一个对现实世界问题进行抽象建模并加入随机数动态进行,为复杂问题的决策提供各种情况的参考,队列可以用来进行模拟系统的开发。
列表List是数据项能够维持相对位置的数据集,链表的实现可以保持列表维持相对位置的特点,而不需要连续的存储空间。链表实现时对链表头部需要特别的处理。
以上就是对线性结构的简单复习,如果大家还有什么问题可以浏览我们之前的笔记,下边将开启新的章节学习内容。
递归
递归是一种解决问题的方法,精髓在于将问题分解为规模更小的相同问题,直到问题小到可以用非常简单直接的方式来解决。递归的问题分解方式非常独特,在算法流程中调用自身。
数列求和
我们先从一个简单的问题开始学习递归,即使不用递归我们也知道如何解决这个问题。假设需要计算数字列表[1 3 5 7 9]的和。