ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

递归精髓:汉诺塔的智慧与数组传参揭秘

递归精髓:汉诺塔的智慧与数组传参揭秘 递归汉诺塔代码:1.问题n 和 问题n-1 直接的递推关系2.结束条件递归过程1、 将n-1个盘子从 A - B //递归2、 将剩下的那个盘子从A-C3、 将n-1个盘子从B-C //递归结束条件看 n 1 //A-C起始 辅助 目标n个盘子 A B Cn-1 A C Bhanoi(3,A,B,C)|---hanoi(2,A,C,B);|---hanoi(1,A,B,C);|---move(A,C); //1 A--C|---move(A,B); //起始 目标//2 A--B|---hanoi(1,C,A,B);|---move(C,B); //3 C--B|---move(A,C); //4 A--C|---hanoi(2,B,A,C);|---hanoi(1,B,C,A);|---move(B,A); //5 B--A|---move(B,C); //起始 目标//6 B--C|---hanoi(1,A,B,C);|---move(A,C); //7 A--C代码整型数组作为函数参数形参能不写成数组形式实参能不能传递数组过去int max(int a,int b){}int a[10] {1234};数组元素a[0] //数组元素 就是int型变量要传递整个数组//想要把整个数组的数据传递过去数据类型 角度a //数组名数据类型 int[10]形参 intx[10]void printArray(int x[10]) //形参 ---实参该咋传{}数组传参本质整型一维数组void printArray(int x[10]) //形参 ---实参该咋传void printArray(int *x)//编译器是这么看的 int *表示是指针类型{}[小结]1.整型一维数组作为函数参数形参//形式上 ---数组形式printArray(int a[],int len) //需要一个数组形式的形参和数组长度的形参//本质上---指针变量(编译器理解的本质)printArray(int *a,int len) //指针变量 用来接收数组首元素的地址实参printArray(数组名,数组长度) //实参传递 要传数组名 和 数组长度//数组名 从代表值的角度 代表的是首元素的地址练习:找出最大值输入10个数找出最大值说明:函数传参 ---实参 给到 形参 实际上是将实参的值 给到 形参变量值传递地址传递练习:逆序进行交换修改的实际上主函数 数组a空间中的数据练习:排序选择排序练习:查找字符型一维数组字符型一维数组 --- 用来存放一个字符串语法点:字符型 一维数组 做函数参数形参 数组形式 //不需要数组长度---字符串本身有结束标志实参 数组名练习二维数组作为函数参数整型:int a[3][4] {1,2,3,4,5,6,7,8,9,10,11,12};void printArray(int a[3][4]) //形参可以写成数组的形式void printArray(int(*a)[4]) //本质编译器还是当作指针看的二维数组的本质一维数组的一维数组void printArray(int[4] a[3]) //形参 可以写成数组的形式void printArray(int[4] *a) //本质编译器还是当作指针看的注意:二维数组作为函数参数形参 二维数组形式 行数的变量实参 二维数组数组名 行数的值
返回列表