递归

解法:

1.写下来重复的关系
2.只要有可能,就存中间结果
尾递归就是最后执行递归操作,就可以不保存之前函数的调用栈,每次都是更新函数内部的调用栈。优秀啊。尤其是斐波那契数列居然可以这么写。

function fTail(n, a = 0, b = 1) {
if (n === 0) return a
return fTail(n - 1, b, a + b)
}

不过所有的递归基本都能通过循环写出来,那种就不需要优化了

做过的递归

x 的平方根

(20 分钟)—简单—递归
image.png
牛顿法很神奇的,需要再研究一下

第一个错误的版本

(10 分钟)—简单—递归
image.png

寻找旋转排序数组中的最小值

(10 分钟)—中等—递归
和第 87 题一样,甚至更简单
image.png

螺旋矩阵

(15 分钟)
我就很简单的递归着转了几圈

罗马数字转整数

(20 分钟)
我是递归,两位可以确定当前位是加还是减,是加就加上当前位,是减就减去当前两位。
其他的方式是逆序,遇到大的就+,遇到小的就减。

斐波那契数

(10 分钟)—简单—递归

image.png

Pow(x, n)

(25 分钟)—中等—递归
主要要找个规律,把 n 的复杂度变成 logN,还不错的
image.png
遇到 n<0 的,把 x 换成 1/x,n 就变成 -n 了,绝了!!
我想到的是递归快速幂方案,迭代快速幂就是里面不断的乘以自己。不错,另一种思路。

第 K 个语法符号

(50 分钟)—中等—递归
image.png
就是规律不是很好找,难度不难

路径总和

(10 分钟)—简单—递归
才开始想错了,一定是根节点到叶子节点才行的。
image.png

分数到小数

(50 分钟)—中等—递归
思路就没想到,总是不相信很复杂….调了半天,真的是难啊
image.png

相同的树

(10 分钟)—简单—递归
递归或者用个栈迭代一下都可以的,easy
image.png

N 皇后

(2 个小时)
题目理解错了,而且用的也是非常傻逼的递归后再剪枝的方法。
这道题应该用回溯法。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:递归

文章字数:548

本文作者:泽鹿

发布时间:2019-09-02, 13:53:38

最后更新:2019-09-09, 16:00:05

原始链接:http://panyifei.github.io/2019/09/02/算法/leetcode/递归/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏