学习
乔宕一
这个作者很懒,什么都没留下…
展开
-
递归的思想
使用该思想快速写出递归函数,不用模拟计算机一级一级地算。 思想 递归就是是假设下一级已经有一个函数做好了,我只要做好这一级,并向上级汇报就行了,然后找出最低级的停止递归的条件。这里说的一个函数就是这个函数本身。 例子 1. 阶乘 如用递归求n的阶乘时,假设已经有一个函数叫fac,给它n-1,它就会把n-1的阶乘求好并返回,我现在只需要把n乘上fac的返回值,然后把结果返回(就是向上级汇报)就够了,那递归什么时候停止呢?就是当n=1时,就没有下一级了,这时候返回1的阶乘,就是1. 代码如下 #include&原创 2020-05-16 12:27:50 · 150 阅读 · 0 评论 -
动态内存分配
动态内存分配和释放的方法 int main(void) { int* p = new int; *p = 4; delete p; char* b = new char[4]; delete[] b; return 0; } 单个变量的内存空间释放用delete,数组的内存空间释放用delete[]。 使用new <类型>开辟内存空间后,new返回的是一个地址,这个地址要用一个指针保存起来才不会丢失。这就是为什么会有下面两句 int* p = n原创 2020-05-13 01:17:04 · 151 阅读 · 0 评论 -
引用变量
功能 引用就是给一个已经定义的变量取一个别名,例如 int main(void) { int a = 5; int& b = a; cout << b; return 0; } 输出为:5 使用&运算符,给a一个外号b,就可以把b当作a来使用了,a和b在内存上占用同一块区域,引用并不会创建新的内存空间。就像使用指针那样。上面的操作等价于 int main(void) { int a = 5; int* b = &a;原创 2020-05-12 23:26:18 · 216 阅读 · 0 评论 -
递归法求一组数的最大值
#include<iostream> using namespace std; int max(int* a, int left, int right) { int mid = (left + right) / 2; if (left == mid) { if (a[left] > a[right]) return a[left]; else return a[right]; } else { if (max(a, left, mid) > ma原创 2020-05-11 00:21:16 · 497 阅读 · 0 评论 -
用递归法判断数组中的数是否为回文
#include<iostream> using namespace std; bool hui_wen(int* a, int left, int right) { if (left >= right) { if (a[left] == a[right]) return true; } else if (a[left] == a[right]) { if (hui_wen(a, left + 1, right - 1)) return true; el原创 2020-05-11 00:09:07 · 515 阅读 · 0 评论