标签:自己 route ade 分表 内存溢出 img 无限循环 调用 com
顾名思义,所谓递归就是一个函数(或方法)自己调用自己,最简的如下:
public void text() {
text();
}
private int count = 0;
/*
* 每次让count累加,当它等于4时,就返回,这样就能这个递归函数了
*/
public void text() {
if (count == 4) {
return;
}
count++;
text();
}
有如下问题:假设第一个月有一对刚出生的兔子,第二个月兔子进入成熟期,我三个月开始生育小兔子,而一对成熟的兔子会在每月生育一对小兔子,兔子永远不会死去。。。n月后会有多少只兔子
可以很容易地使用穷举来计算刚开始的几个月的兔子数
月份 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
兔子对数 | 1 | 1 | 2 | 3 | 5 | 8 | 13 |
很容易得到一个算式就是:
当n=0时,有0对兔子;
当n=1时,有1对兔子;
当n=2时,有1对兔子,因为它是第三个月才开始生小兔子的
当n>2时,F(n)=F(n-1)+F(n-2)
当有了上面的式子后,我们就很容易地写出了如下代码:
public static int brithNew(int n) {
if (n < 0) {
return -1;
}
if (n == 0) {
return 0;
}
//这个其实就是递归退出的条件,因为n一直的在递减
if (n <= 2) {
return 1;
}
return brithNew(n-1)+brithNew(n-2);
}
先使用二维数组定义一个迷宫,有如下约定:
private static void init(int[][] maze) {
//定义所有的墙
for (int i = 0; i < 10; i++) {
maze[0][i] = 1;
maze[7][i] = 1;
}
for (int i = 0; i < 8; i++) {
maze[i][0] = 1;
maze[i][9] = 1;
}
maze[3][1] = 1;
maze[3][2] = 1;
maze[3][3] = 1;
maze[5][3] = 1;
maze[5][4] = 1;
maze[5][5] = 1;
maze[4][5] = 1;
maze[3][5] = 1;
maze[2][5] = 1;
maze[1][5] = 1;
maze[2][7] = 1;
maze[3][7] = 1;
maze[4][7] = 1;
maze[5][7] = 1;
maze[6][7] = 1;
}
打印下这个数组,就和上边的图片一样,如下:
然后就开始找寻路径,具体有如下规则
private static boolean searchRoute(int maze[][], int x, int y) {
int i = maze.length;
int j = maze[0].length;
if (maze[i - 2][j - 2] == 2) {
//目标点的值为2,就说明这条路已经走完了
return true;
} else {
if (maze[x][y] == 0) {//为0说明这这条可走,而且没有走过
maze[x][y] = 2;
//按照下、右、上、左的顺序
if (searchRoute(maze, x + 1, y)) {//向下
return true;
} else if (searchRoute(maze, x, y+1)) {//向右
return true;
} else if (searchRoute(maze, x - 1, y)) {//向上
return true;
} else if (searchRoute(maze, x, y - 1)) {//向左
return true;
} else {
maze[x][y] = 3;
return false;
}
} else {
return false;
}
}
}
上边用到的打印数组的代码为:
public static void printlnArr(int arr[][]) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
System.out.println();
}
}
标签:自己 route ade 分表 内存溢出 img 无限循环 调用 com
原文地址:https://www.cnblogs.com/Lyn4ever/p/12169283.html