写一个递归与回溯算法
在我们生活中的树就是一种递归的结构,或者说只要形成了树结构的都可以用递归的方式来处理遍历。主枝干会有很多的分支,每一个分支和主干一样也同样会有其他更多的子分支,每一个更小的分支还会有更多的子分支...
递归本质就是遍历整颗树的一种方式(一个不差的扫描树的每一个叶子获取所有的可能性都这也是递归存在的意义),从主干开始遍历整颗树和从某一个分支遍历所在的子树本质是一样的,不过是一个更小的问题罢了。当更小的问题解决之后,会自动回到子问题开始的位置,当所有子分支都被解决之后,会回到主枝干一开始解决问题的起始地方,这时候整个问题都被解决了。
递归是由递归的终止条件与更小的子递归问题共同构成了原问题,是一种自顶向下解决问题的算法思维。
斐波那契数列
0 1 1 2 3 5 7 12 ...
如何写一个递归算法
写递归算法的时候,不用考虑调用子递归函数内部具体逻辑是怎么样实现的,想象自然界中的树结构,每一个子分支也是一颗树。调用递归函数会得到更小范围的答案,因为原问题和子问题有着相同的逻辑,所以整个问题都解决了。
比如上面的斐波那契数列,