递归
解法:
1.写下来重复的关系
2.只要有可能,就存中间结果
尾递归就是最后执行递归操作,就可以不保存之前函数的调用栈,每次都是更新函数内部的调用栈。优秀啊。尤其是斐波那契数列居然可以这么写。
function fTail(n, a = 0, b = 1) {
if (n === 0) return a
return fTail(n - 1, b, a + b)
}
不过所有的递归基本都能通过循环写出来,那种就不需要优化了
做过的递归
x 的平方根
(20 分钟)—简单—递归
牛顿法很神奇的,需要再研究一下
第一个错误的版本
(10 分钟)—简单—递归
寻找旋转排序数组中的最小值
(10 分钟)—中等—递归
和第 87 题一样,甚至更简单
螺旋矩阵
(15 分钟)
我就很简单的递归着转了几圈
罗马数字转整数
(20 分钟)
我是递归,两位可以确定当前位是加还是减,是加就加上当前位,是减就减去当前两位。
其他的方式是逆序,遇到大的就+,遇到小的就减。
斐波那契数
(10 分钟)—简单—递归
Pow(x, n)
(25 分钟)—中等—递归
主要要找个规律,把 n 的复杂度变成 logN,还不错的
遇到 n<0 的,把 x 换成 1/x,n 就变成 -n 了,绝了!!
我想到的是递归快速幂方案,迭代快速幂就是里面不断的乘以自己。不错,另一种思路。
第 K 个语法符号
(50 分钟)—中等—递归
就是规律不是很好找,难度不难
路径总和
(10 分钟)—简单—递归
才开始想错了,一定是根节点到叶子节点才行的。
分数到小数
(50 分钟)—中等—递归
思路就没想到,总是不相信很复杂….调了半天,真的是难啊
相同的树
(10 分钟)—简单—递归
递归或者用个栈迭代一下都可以的,easy
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" 转载请保留原文链接及作者。