美文网首页
2019-05-07阶乘算法、找最长单词

2019-05-07阶乘算法、找最长单词

作者: caf46d992d3c | 来源:发表于2019-05-07 18:48 被阅读0次

算法2:阶乘

以下code参照网址 https://www.cnblogs.com/jialuchun/p/6559422.html

阶乘介绍:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!

阶乘函数是递归函数典型示例。

阶乘的实现方法(一种递归,两种循环):

负数没有阶乘,只有-1有双阶乘,双阶乘的意思是:(2n)!=246……2n,(2n+1)!=135……(2n+1),(-1)的双阶乘是0

方法1:

function face (n){
    if(n<0){
        return -1
    }else if(n===0 || n===1){
        return 1
    }else{
        return n*face(n-1)
    }
}
f(6)

方法2:

非严格模式下---消除函数名和函数执行的紧密耦合现象

function factorial(n){
    if(n<=1){
        return 1
    }else{
        return n*arguments.callee(n-1)
    }
}
factorial(3)

方法3:通过命名函数的方式消除耦合

var factorial = (function f(num){
        if (num <= 1){
            return 1;
        } else {
            return num * f(num-1);
     }
});

for循环:

function factorial(n){
    if (n <= 1){
        return 1;
    }else if(n===0 || n===1){
        return  1
    }
    for(let i=n-1;i>0;i--){
     n *= i;
    }
    return n
};
factorial(3)

while循环:

function d(n){
 var result=n;
    if(n<0){
        return -1
    }else if(n===0 || n===1){
        return  1
    }
    while(n>1){
        n--;
        result*=n;
    }
    return result;
}

算法3:找最长的单词:

返回最长的单词长度

function word(w){   //返回最长的单词长度
    var narr=[];
    var arr=w.split(" ");
    arr.map(v=>narr.push(v.length) )

    return narr.sort((a,b)=>b-a)[0];

}
word("ddd ssss wwwww oooooo")//6

返回最长的单词

function word(w){   //返回最长的单词
    var arr=w.split(" ");
    return arr.sort((a,b)=>b.length-a.length)[0];
}
word("ddd ssss wwwww oooooo")//"oooooo"

相关文章

网友评论

      本文标题:2019-05-07阶乘算法、找最长单词

      本文链接:https://www.haomeiwen.com/subject/efiyoqtx.html