前言
终于开始算法了。。。
递归真鸡儿抽象,没有基层原理就跟玄学一样。。。
一、利用递归能解决什么问题
二、递归调用机制
-
调用机制大概就是谁调用就把结果返回给谁然后再从上到下依次执行代码程序
-
关于这个打印问题:赋值text(4)。把输出加上else跟不加else的区别,1,如果不加上,那就是最后的text(2)不满足递归条件了,text(2)执行完程序后(打印当前n值)返回到text(3)里面也就是说在text(3)中text(2)执行完了,然后往下面再指向自己的打印语句,那么相对于text(4)也是一样的:每返回去一次就会打印当前n值一次。加了else:只有在最后的text(2)中不满足递归条件时,进行打印当前的n值,其他的text(3)text(4)都是满足的,所以返回时不执行else语句:也就是说把打印语句加上else,他只会在不满足递归条件时打印一次。(打印n=2)
-
关于阶乘:这个其实好理解,自己走一遍,遵循自上而下的执行,一个语句要执行到底(特别是递归),等他把所有的结果返回上来后在执行下面的语句
2.调用规则
三、利用递归的迷宫问题
1.说明
2.代码实现
public class MiGong {
public static void main(String[] args) {
//创建一个二维数组模拟迷宫
//地图
int map[][] = new int[8][7];//数组的初始化
//他不是独立的数据,是共享的,所以递归都是改变的一个数组
//使用1表示墙
//先把上下全部置为1
for (int i = 0; i < 7; i++) {
map[0][i] = 1;
map[7][i] = 1;
}
//把左右置为1
for (int i = 0; i < 8; i++) {
map[i][0] = 1;
map[i][6] = 1;
}
//设置挡板,1表示
map[3][1] = 1;
map[3][2