前几天面试遇到这个算法,半年前的我还觉得这对我来说是多么困难的一道题,但在面试的时候,我竟然略微思索就写出来了,虽然面完试回来,有些细节实现的不是很好。
多亏最近都在刷剑指offer和leetcode。
想起来前段时间同事还在嘲笑我为什么要刷算法题,作为一个前端开发工程师,我无力反驳,我只是想更优秀些。
递归和迭代
递归:
function fobonicci(n) {
if(n === 1 || n === 2) return 1;
return fobonicci(n-1) + fobonicci(n-2);
}
迭代:
function fobonicci(n) {
if(n === 1 || n ===2 ) return 1;
var result;
var oldResult = 1;
var oldResult2 = 1;
while(n > 2) {
result = oldResult2 + oldResult;
oldResult2 = oldResult;
oldResult = result;
n--;
}
return result;
}
网友评论