循环与递归笔记
1.循环与递归:
n 设计算法重复处理大量数据的思路:以不变应万变;
n (斜输出)关键问题:第i斜行、j列的数据对应于第几行第几列的元素?a[i-1+j][j]
n 当输出时还是按a[i][j]输出 因为里面已经赋好值了。每输出一行换行。
n 递归的关键在于找出递归方程式和递归终止条件。
n MOD 是相除取余数,DIV是相除取商整数
欧几里得算法递归算法:
递归代码:
gcd(m,n)
{ if n=0 return(m)//出口
else return (GCD(n,m mod n))//不停的调用自身
}
2.定义:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关
堆栈是一种执行“后进先出”算法的数据结构。
设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。
堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。
堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的。
堆栈可以用数组存储,也可以用以后会介绍的链表存储。
数学建模就是把现实世界中的实际问题加以提炼,抽象为数学模型,求出模型的解,验证模型的合理性,并用该数学模型所提供的解答来解释现实问题,我们把数学知识的这一应用过程称为数学建模。
递推与递归的区别:递推像是多米诺骨牌,根据前面几个得到后面的;递归是大事化小,比如汉诺塔(Hanoi)问题,典型的递归。
地位于高位:如果int类型的值不是二进制形式的,先转化为二进制,左边的是高位,右边的是低位
3.关于字符、字符串的输入函数:
- cin
– 接收键盘输入,将空格、回车符作为分隔符使用
– #include <iostream> using namespace std;
- cin.getline(数组名,字符个数,[结束符])
– 接收键盘输入,回车符作为分隔符使用
– #include <iostream> using namespace std;
– 跳过结束符,从结束符之后的数据继续进行读操作
- char getchar()
– 接收任何的键盘输入,包括空格,回车符
– #include <iostream> using namespace std;
- char[ ] gets(char [ ])
– 接收一个字符串,可以接收空格,(知道读到结束符)
– #include <iostream> using namespace std;
– 不跳过结束符