C#学习笔记——(四)
一、递归
- 方法内部又调用自身的过程;
- 核心思想:将问题转移给范围缩小的子问题;
- 适用性:在解决问题过程中,又遇到相同问题;
- 优势:将复杂的问题简单化;
- 缺点:性能较差(cpu占用过多)
- 注意:存在堆栈溢出
二、一维数组
- 从Array类派生的,一组数据类型相同的变量组合;
- 一种空间连续的数据结构;
- 元素通过索引(位置的序号)进行操作。
1、定义数组
- 声明数组
数据类型[ ] ~ 数组名 - 初始化数组
数组名 = new ~ 数据类型[元素总数];
2、初始化数组
1>初始化
- 初始化的元素类型与声明时的类型必须相同。
- 数组初始化后,内存中存储该数据类型的默认值:
–整型为 0
–非整型为 0.0
–char为 \0
–string为 null
–bool为 false
2>初始化 + 赋值
- 可以再数组初始化的同时对元素进行赋值;
- 语法:
数据类型[ ] 数组名 = new ~ 数据类型[ ]{元素1,元素2…};
例如:
int[] array01 = new int[] {1,2,3,4,5}; - 初始化时[ ]内也可以填入数组长度,但必须与所赋值的元素总数一致。
3>声明 + 赋值
- 可以在数组声明的同时对元素进行赋值;
- 语法:
数据类型[ ] 数组名 = {元素1,元素2…};
例如:
int[] array01 = {1,2,3,4,5}; - 元素的个数即为数组长度;
- 程序员可以省略初始化,但编译器内部仍然会"new 数据类型[]";
- 不支持以下写法:
double[] array03;
array03 = {1.0,2.0};
3、访问数组元素
1>通过索引访问
- 可以通过数组的索引(位置的序号)进行读写操作;
- 语法:
数组名[索引]
例如:
string[] array = new string[]{“a”,“b”,“c”};
Console.WriteLine(array[0]);–获取数组第一个元素
2>通过for遍历
- 遍历:按照某种顺序访问每一个元素;
- for 循环遍历数组元素,正序输出到控制台中:
string[] array = new string[]{“a”,“b”,“c”};
for (int i=0;i<array.Length;i++)
{
~~~~~~ Console.WriteLine(array[i]);
} - for 循环遍历数组元素,倒序输出到控制台中:
string[] array = new string[]{“a”,“b”,“c”};
for (int i=array.Length -1 ;i<=0 ;i --)
{
~~~~~~ Console.WriteLine(array[i]);
}
3>通过foreach遍历
- foreach 是一种更简单那更明了的读取数组元素的语句;
- 局限性:
1.只能读取全部元素(语句本身)
2.不能修改元素
3.只能遍历实现Ienumberable接口的集合对象 - 语法:
foreach(元素类型 ~ 变量名 ~