斐波那契数列和数组去重算法

来源:互联网 发布:json和jsonp的区别 编辑:程序博客网 时间:2024/05/16 10:17

1.斐波那契数列

简介:

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,

故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

原理:

在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

JavaScript实现

function fibonacci(n) {    if(n==0){        return 0;    }    else if(n==1){        return 1;    }    else {        return arguments.callee(n-1)+arguments.callee(n-2);    }}


2.数组去重

注意事项:

对于其他类型的数值,若自身等于自身,则都是会返回true,但是对于NaN,则是false,则是在去除NaN数值重复的一个关键条件。

在数组中,对于NaN和Object类型的元素,则使用indexOf去查找,则都是返回-1,因为无法找到相同的Object和NaN,每个都不是一样的。

JavaScript实现

Array.prototype.uniq = function () {    var result=[];    var flag=true;    for(var i=0;i<this.length;i++){        if(result.indexOf(this[i])==-1){            if(this[i]!=this[i]){                if(flag){                    result.push(this[i]);                    flag=false;                }            }            else {                result.push(this[i]);            }        }    }    return result;}

输入

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]
输出
[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

原创粉丝点击