美文网首页
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