学习笔记
这周主要学习了递归算法。 递归,就是一个函数里面调用本身,类似树形结构,如果函数体只有一个递归函数,那就是单叉树,如果是两个递归函数,那就是 二叉树,如果是多个,那就是多叉树。 刚开始我对递归不了解他们的执行顺序,当我写了一个这样的例子:
function recursion(i,name){ if(i>=3) { return 0; } console.log('我是',i,name)
recursion(i+1,'左');
recursion(i+1,'右');
} recursion(0,'根');
通过输出可以发现,原来双递归就是一个先序遍历的树呀。 递归必须要写终止条件,这个条件如果没写好,就死循环。 分治和回溯,其实也是递归,是递归中的解决问题的方法。 分治,就是把一个大问题细分成小问题,一个个解决,比如二分查找和归并排序就是典型的分治思想 回溯法可以理解为通过选择不同的岔路口寻找目的地,一个岔路口一个岔路口的去尝试找到目的地。 如果走错了路,继续返回来找到岔路口的另一条路,直到找到目的地。