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

呼市企业网站制作丰和园林建设集团网站

呼市企业网站制作,丰和园林建设集团网站,番禺市桥网站建设,蜂蜜做的好网站或案例递归(recursion) 思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复 本质:栈的使用 递归的注意事项 (1)需要有递归出口,否者就…

递归(recursion

思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复

本质:栈的使用

递归的注意事项


递归的内存机制分析

代码示例


public class Recursion01 {public static void main(String[] args) {Tt1 = newT();t1.test(4);//输出什么? n=2 n=3 n=4}}class T {public void test(int n) {if (n > 2) {test(n- 1);}System.out.println("n=" + n);}
}

内存视图分析

在这里插入图片描述


递归实例

案例一:阶乘问题(factorial

import java.util.Scanner;
public class recursion {public static void main(String[] args){Scanner input = new Scanner(System.in);object object = new object();System.out.print("input a number:");long n = input.nextLong();long result = object.factorial(n);System.out.print("factorial(" + n + ") is:" + result);}
}class object{public long factorial(long n){if(n == 1){return 1;}else{return n * factorial(n - 1);}}
}

案例二:猴子吃桃问题

有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时,想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?

public class recursion {public static void main(String[] args){method t = new method();int res = t.peach(1);System.out.print(res);}
}class method{public int peach(int day){if(day == 10){return 1;} else if(day >= 1 && day <= 9){return ( peach(day + 1) + 1 ) * 2;   // 枚举每天的情况找规律得到}else{return -1;}}
}

案例三:斐波那契数列

1,1,2,3,5,8,13…给你一个整数 n,求出它的值是多少?

特点:从第三个数开始,后一个数等于前面两个数之和

//斐波那契数列:1,1,2,3,5,8,13...public class recursion {public static void main(String[] args){method t = new method();int res = t.fibonacci(10);System.out.print(res);}
}class method{public int fibonacci(int n){if(n == 1 || n == 2){return 1;}else{return fibonacci(n - 1) + fibonacci(n - 2);}}
}//输出:55

案例四;汉诺塔

有趣的小故事

在这里插入图片描述

思路分析:可以把这个问题拆分

//斐波那契数列:1,1,2,3,5,8,13...public class recursion {public static void main(String[] args){tower t = new tower();t.move(3, 'a', 'b', 'c');}
}class tower{// 移动的圆盘个数, A塔 ,B塔 , C塔public void move(int num, char a, char b, char c){if(num == 1){System.out.println(a + "->" + c);}else{// 把上面的 n-1 个圆盘从 a塔 移动到 b塔,中间借助 c 塔move(num -1, a, c, b);// 把最下面的圆盘移动到 c塔System.out.println(a + "->" + c);// 把 b塔 的所有盘移动到 c塔,中介借助 a塔move(num -1, b, a, c);}}
}//输出
a->c
a->b
c->b
a->c
b->a
b->c
a->c

迷宫问题

在这里插入图片描述

思路:运用二维数组表示迷宫,初始位置为(1,1),走到出口处,标记路线

代码示例

public class migong {public static void main(String[] args){int[][] map = new int[8][7];//标记墙面的部分for(int i = 0; i < 8; i++){map[i][0] = 1;map[i][6] = 1;}for(int i = 0; i < 7; i++){map[0][i] = 1;map[7][i] = 1;}map[3][1] = 1;map[3][2] = 1;// 回溯测试:辅助理解方法调用完成后栈空间释放,是如何返回的
//        map[2][2] = 1;// 封闭路径,测试结果
//        map[2][1] = 1;
//        map[2][2] = 1;
//        map[1][2] = 1;// 调用方法t finder = new t();finder.findway(map,1,1); // 起点是(1,1)//打印找路结果for(int i = 0; i < map.length; i++){for(int j = 0; j < map[i].length; j++){System.out.print(map[i][j] + " ");}System.out.println("");}}
}class t{public boolean findway(int[][] map, int i, int j){// 找路策略:下右上左// 如果找到了就出口返回 trueif(map[6][5] == 7){return true;}else{if(map[i][j] == 0){//假设当前点使用探路策略可以走通,就说明可以和之前的点衔接起来构成一条可以走通的路线map[i][j] = 7;// 接着使用找路策略开始探路,验证当前点开始是否可以走通//往下走if(findway(map, i+1, j)){return true;}// 往右走else if(findway(map, i, j+1)){return true;}// 往上走else if(findway(map, i-1, j)){return true;}// 往左走else if(findway(map, i, j-1)){return true;}// 都走不通,走过了但是走不通就标记为 3else{map[i][j] = 3;return false;}}else{  // 此时 map[i][j] = 1, 7, 3 ; 7 表示测试过了就不要再重复测试return false;}}}
}

理解:没走到一个点,就会递归的使用下->右->上->左的方式进行探路,如果都走不通就会返回到上一次递归调用,继续探路,指导找到出口为止


文章转载自:

http://Q6BXJnCz.kqxwm.cn
http://cKVVWbbN.kqxwm.cn
http://yXV8BVLY.kqxwm.cn
http://Jr07v22z.kqxwm.cn
http://U5UKib8H.kqxwm.cn
http://Z66pRj36.kqxwm.cn
http://EEsNqCbr.kqxwm.cn
http://sVIuAxou.kqxwm.cn
http://PStWp1zW.kqxwm.cn
http://IVfIf6CR.kqxwm.cn
http://GokOUBb0.kqxwm.cn
http://7Q3nOeyS.kqxwm.cn
http://f7a6eLFG.kqxwm.cn
http://xNUGgGum.kqxwm.cn
http://vMQ3pNdw.kqxwm.cn
http://Bm3dM3iY.kqxwm.cn
http://eo8dAhok.kqxwm.cn
http://o90b0qv1.kqxwm.cn
http://ukFNGJ8d.kqxwm.cn
http://CUiNWkSx.kqxwm.cn
http://988wEhpf.kqxwm.cn
http://znywsUkJ.kqxwm.cn
http://zQo90P8e.kqxwm.cn
http://MCSN9rvo.kqxwm.cn
http://uSrqc37j.kqxwm.cn
http://akxQhZLI.kqxwm.cn
http://0CPzCJRS.kqxwm.cn
http://x6Vm25nU.kqxwm.cn
http://BHyFWMeQ.kqxwm.cn
http://dzNz0qG4.kqxwm.cn
http://www.dtcms.com/wzjs/760230.html

相关文章:

  • 网站项目的介绍静安建设网站
  • 网站建设立项ppt模板得有店小程序官网
  • asp.net 创建网站做网站需要哪些东西
  • 成都网站托管做网站教程 第一课
  • 海淀网站建设公司杭州维利国德网站建设案例
  • 建设网站要求263企业邮箱入口登录网页版
  • 上海网站建设定国外的网站需要备案吗
  • 打鱼网站开发上传到服务器的网站打开是空白
  • 建设银行宁波分行招聘网站专业建站培训
  • 济宁 网站建设上海app开发
  • 那种登录才能查看的网站怎么做优化新像素ui设计学费
  • 阿里巴巴网站建设哪家好500强企业网站有哪些
  • 福建住建设厅官方网站什么是外包公司?
  • 沧浪公司网站建设电话WordPress淘客转链插件
  • 电话销售做网站长沙网站优化收费
  • 顺企网网站建设如何申请自己的网站空间
  • 微信分销网站建设比较好如何开网页游戏
  • 网站的flash怎么做的设计手机网站内容模块
  • 网站建设行业知乎手机网站建设 广州
  • 服装企业网站模板东莞是什么网站建设
  • 网站建设中什么是一栏如何制作自己的网站图?
  • 泉州外贸网站开发公司织梦网站优化
  • 宁波网站开发定制网站建设新模式
  • 湖南新备案的网站如何免费创建个人网站
  • 济南国画网站济南网站建设公司wordpress 插件 销量
  • Wordpress ajax 相册沈阳seo关键词排名优化软件
  • 石家庄营销型网站建设费用网站建设的要求有哪些
  • 网站负责人核验照织梦微信网站模板
  • 简易app开发软件优化大师是什么意思
  • 成都营销网站设计微信开发者工具的介绍