当前位置: 首页 > news >正文

做培训网站前端小程序模板套用教程

做培训网站前端,小程序模板套用教程,甘肃做高端网站的公司,最新新闻热点图片一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来说就是要胆大心细,宏观看待问题 其实很多递归的问题如果从宏观的角度去看,其实特别简单,比如二叉树的后序遍历,他无非就是: 你先给我一个根节点访问根节点的左子树访问根节点的右子树再打印当前节点的值 对于每一个节点的操作都是相同的,如果从宏观的角度看,我们可以把一个复杂的二叉树想象成一个只有三个节点的二叉树 把二叉树的后序遍历就当做访问这个只有三个节点的二叉树,按照左右根的顺序遍历 dfs(TreeNode root) {if(root null) return;dfs(root.left);// 访问左节点dfs(root.right);// 访问右结点println(root.val);// 打印当前节点的值 }大致总结下来递归问题的思路如下: 分析:根据题目分析,判断是否有重复的子问题,如果有,就可以利用递归解决,设计出函数头,从宏观的角度想,要完成这次操作,这个接口需要什么参数(二叉树的遍历需要root,快排需要一个数组和开始结束位置)设计函数体:只关注某一个子问题的具体操作,比如二叉树的后序遍历的子问题就完成三步:访问左子树,访问右子树,打印当前节点递归出口:确定好递归出口,将子问题分割到最小单元进行确定,比如二叉树的遍历当节点为空时就不需要再去执行任何操作了,直接返回即可,快排,分割到数组只有一个数字或者为空时(l r)就不需要继续分治了 二.例题解析: 1.汉诺塔问题 链接:https://leetcode.cn/problems/hanota-lcci/description/ 分析: 函数头:给我三个柱子和盘子数函数体:先借助c将a上的n-1个盘子移动到b,然后将a剩余的最大的盘子移动到c,再借助a,将b上的n-1个盘子移动到c递归出口:当只有一个盘子的时候,直接移动 代码: class Solution {public void hanota(ListInteger A, ListInteger B, ListInteger C) {int n A.size();dfs(A,B,C,n);}private void dfs(ListInteger a, ListInteger b, ListInteger c,int n) {// 递归结束条件 只有一个盘子的时候直接移动if(n 1) {c.add(a.remove(a.size() - 1));return;}// 模拟:借助c,将a上的n-1个盘子移动到b上dfs(a,c,b,n-1);// 将最大的盘子移动到c上c.add(a.remove(a.size() - 1));// 模拟:借助a,将b盘上的n-1个盘子移动到c上dfs(b,a,c,n-1);} }2.合并两个有序链表 链接: https://leetcode.cn/problems/merge-two-sorted-lists/ 分析: 函数头:两个链表的头结点函数体:判断较小值,合并之后的所有节点,并连接返回的节点递归出口:只有一个节点或者为空 代码: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {// 递归if(list1 null) return list2;if(list2 null) return list1;// 将后面的链表给我合并好,并且返回合并好的节点if(list1.val list2.val) {list1.next mergeTwoLists(list1.next,list2);return list1;}else {list2.next mergeTwoLists(list2.next,list1);return list2;}} }3.反转链表 链接: https://leetcode.cn/problems/reverse-linked-list/submissions/514361305/ 分析: 函数头:给我头结点,逆序整个链表函数体:逆序之后的所有节点,并且返回逆序之后的头结点,然后和当前节点拼接递归出口:只有一个节点或者为空 代码: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode reverseList(ListNode head) {// 递归出口if(head null || head.next null) return head;// 函数体 你给我逆置后面的所有链表并且返回新的头结点ListNode newhead reverseList(head.next);// 反转head.next.next head;head.next null;return newhead;} }4.两两交换链表中的节点 链接: https://leetcode.cn/problems/swap-nodes-in-pairs/ 分析: 函数头:重复子问题就是给我一个节点,两两交换后面的链表的所有节点函数体:关注每一个子问题要干什么,得到交换后的头节点,然后链接这个头结点递归出口:空或者只有一个节点 代码: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null) return head;ListNode ret head.next;// 最终要返回的节点应该是head.next(是头结点的下一个节点)ListNode newHead swapPairs(head.next.next);head.next.next head;head.next newHead;return ret;} }5.Powx, n- 快速幂 链接: https://leetcode.cn/problems/powx-n/submissions/514390268/ 分析: 函数头:结合快速幂的思想,递归函数就是求x ^ n的值函数体:每一个子问题的操作,得到 x ^ n / 2的值,再判断返回的结果的值递归出口:n 0 代码: class Solution {public double myPow(double x, int n) {// 注意n可能为负数return n 0 ? 1.0 / pow(x,-n) : pow(x,n);}public double pow(double x,int n) {if(n 0) return 1.0;double tmp pow(x,n/2);return n % 2 0 ? tmp * tmp : tmp * tmp * x;} }
http://www.w-s-a.com/news/87694/

相关文章:

  • 烟台高端网站建设公司福田市网站建设推广
  • 做网站如何保证询盘数量智慧城市
  • 大连网站平台研发wordpress更改地址
  • 做标书要不要做网站南昌网站排名优化费用
  • 网站内容如何自动关联新浪微博万网域名信息
  • 网站出售网络推广服务费计入什么科目
  • 宁波咨询网站设计西安网站制作开发
  • 深圳市专注网站建设全网营销网络推广
  • 如何快速建设网站虚拟空间软件
  • 一个虚拟主机可以做几个网站免费软件下载中心
  • 美工培训网站中国建筑网官网手机版
  • 创建网站花钱吗谁能给个网址免费的
  • 宁波教育学会网站建设网站建设价格由什么决定
  • 北京定制网站价格wordpress上传pdf文档
  • 网站建设费税率dz论坛seo设置
  • 推销网站话术商业网站开发与设计
  • 金华网站建设哪个网站做欧洲旅行比较好
  • 东莞市住房和城乡建设局网站trswcm网站建设
  • 郑州做网站企业h5编辑器免费版
  • 加强公司窗口网站建设陕西省外省入陕建筑信息平台
  • 成都网站优化实战大连企业网站建设模板
  • 服务器硬件影响网站速度seo网站推广价格
  • 学院网站开发竞争对手分析买网站送域名
  • 手机网站 jsp个人网页制作成品代码五个页面
  • ppt做长图网站wordpress文章页面图片自动适应
  • 做泌尿科网站价格京东商城网站建设教程
  • 像网站的ppt怎么做的移动app与网站建设的区别
  • 怎么建个人网站网站收录有什么用
  • 广州市医院网站建设广州头条新闻最近一周
  • 广州移动 网站设计中国交通建设监理协网站