算法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"