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

专门做定制化的网站/网页制作代码

专门做定制化的网站,网页制作代码,政府大型门户网站建设方案,石家庄建设网站递归算法:开始不断的调用自己,直到到达递归的出口,当到达递归的出口之后,最后调用的最先返回。做递归算法最重要的是找到出口。 就好比栈 ,开始一直往栈里面装入东西,直到抵达出口的时候才开始往外面拿东西…

递归算法:开始不断的调用自己,直到到达递归的出口,当到达递归的出口之后,最后调用的最先返回。做递归算法最重要的是找到出口。

就好比栈 ,开始一直往栈里面装入东西,直到抵达出口的时候才开始往外面拿东西。

图示左边先不断的调用,右边是从栈顶开始不断的返回。

实例1:求阶乘

 1 package com.hone.recursion;
 2 
 3 public class fact {
 4     public static long fact(int n){
 5         int x;
 6         long y;
 7         
 8         if (n<0) {
 9             System.out.println("请输入正确的参数");
10         }
11         if (n==0) return 1;
12         else{
13             x=n-1;
14             y=fact(x);
15             return n*y;
16         }
17     }
18     
19     public static void main(String[]  args){
20         long fn;
21         fn=fact(3);
22         System.out.println("fn= "+fn);
23         
24     }
25 }

 

过程图

实例2:用对半法来查找

 1 package com.hone.recursion;
 2 
 3 public class BinSearch {
 4     public static int bSearch(int[] a, int x, int low,int high){
 5         int mid;
 6         if (low>high) return -1;
 7         
 8         mid=(low+high)/2;
 9         if (a[mid]>x) {
10             return bSearch(a, x, low, mid-1);
11         }
12         else if (a[mid]<x) {
13             return bSearch(a, x, mid+1, high);
14         }
15         else 
16             return mid;
17     }
18     
19     public static void main(String[] args) {
20         int[] a={1,4,6,9,11,14,17,23,33,36,79,119,345,678,890};
21         int x=33;
22         int low=0;
23         int high=a.length-1;
24         System.out.println(high);
25         int re=bSearch(a, x, low, high);
26         if(re==-1){
27             System.out.println("x不在数组中....");
28         }
29         else{
30             System.out.println("x在数组中的下标值为:"+re);
31         }
32     }
33 }    

 

实例3:汉诺塔游戏

 1 package com.hone.recursion;
 2 
 3 public class HanNoiTower {
 4     
 5     public static void towers(int n ,char from ,char To, char aux){
 6         
 7         if (n==1) {
 8             System.out.println("Move disk 1 from "+from +" To "+To);
 9             return ;
10         }
11         
12         //思路,首先应该将n-1个盘子在C的帮助下从A移到B
13         towers(n-1, from, aux, To);
14         
15         //在将盘子n从A直接移动c中 
16         System.out.println("move disk "+n +" from " +from+" To "+ To);
17         
18         //再将剩余的n-1个盘子在A的帮助下从B移动到C中
19         towers(n-1, aux, To, from);
20     }
21     public static void main(String[] args) {
22         towers(4, 'A', 'B', 'C');
23     }
24 
25 }

汉诺塔用递归调用是最好的实例,你只需要有大致的思路,其他的都可以交给算法来处理。

了解递归的运行过程,最好的办法就是用debug模式来分析程序运行的过程。

在很多情况下,递归能实现的事情,通常循环也可以实现。而且循环所需要的时间复杂度远远的低于递归的时间复杂度。 

 

转载于:https://www.cnblogs.com/xiaxj/p/6542804.html

http://www.jmfq.cn/news/4805749.html

相关文章:

  • 做网站服务器软件/百度搜索关键词排名优化技术
  • 做网站满屏的照片尺寸是多少/交换神器
  • 做网站好的网络公司/汕头seo网站建设
  • 营销型网站建设需要多少钱/湖南疫情最新消息
  • 济宁网站建设公司公司/最新nba排名
  • 网站建设与管理用什么软件有哪些/为什么打开网址都是站长工具
  • 营销型网站有哪些出名的/今日最新新闻
  • 小米的网站建设的要点/app开发定制
  • 南阳建设网站制作/aso优化软件
  • 网络舆情监测处置制度/惠州seo网站推广
  • 宝鸡网站建设公司/深圳网络营销怎么推广
  • jsp环保主题网站代做/app推广拉新平台
  • 做网站说什么5.0啥意思/网站优化排名提升
  • 中企动力网站模板/商城网站建设
  • 做网站会提供源代码吗/吉林seo关键词
  • 个人动态网站/网站收录怎么弄
  • 有域名了怎么做网站/网络推广优化平台
  • 杭州91网站建设/百度认证
  • 做网站佛山/合肥seo按天收费
  • 哈尔滨哪里做网站好/网页设计实训报告
  • 我司如何自己建设动态网站/百度收录平台
  • 中山 做网站/注册网址在哪里注册
  • 免费网站怎么制作/如何免费自己创建网站
  • 国家企业信用信息公示系统查询网/什么是搜索引擎优化的核心
  • 包装设计的目的和意义/seo研究协会
  • 中国空间站结构示意图/网站推广的主要方法
  • 广西玉林网站建设/seo技术平台
  • 汕头建网站/百度文库网页版
  • 南桥做网站/口碑营销的方法
  • 美食网站怎样做锅包肉/seo的主要工作是什么