为了账号安全,请及时绑定邮箱和手机立即绑定

js学习笔记 2-04 函数练习

标签:
JavaScript
函数练习
//判断一个数是否是素数
//质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
function isPrime(num){
    if(typeof num !=="number" || num<=1 || num%1 !== 0){
        console.log("咱能正常传个大于1的自然数麽");
        return false;
        }
        var isZS=true;//假设是素数
         for(var i=2;i<=Math.sqrt(num);i++){
                if(num%i===0){//除尽不是素数
                        isZS = false;
                }
         }
      return isZS;//返回布尔值
}
console.log(isPrime(1.1))//false
console.log(isPrime(23))//true
//求阶乘
function getJC(num){
        if(typeof num !=="number" || num<0 || num%1 !== 0){
        console.log("咱认真的传传值可以伐");
        return false;
        }
        var sum = 1;
        for(var i=2;i<=num;i++){
            sum*=i;
        }
        return sum;
}
console.log(getJC(0))//1
console.log(getJC(1))//1
console.log(getJC(2))//2
console.log(getJC(3))//6
//求0!+1!+2!+3!+...+n!
function getSumJC(n){
    if(typeof n !=="number" || n<0 || n%1 !== 0){
        console.log("咱认真的传传值可以伐");
        return false;
    }
    var sum = 1;
    for(var i = 1;i<=n;i++){
        sum+=getJC(i)
    }
    return sum;
}
console.log(getSumJC(0))//1
console.log(getSumJC(1))//2
console.log(getSumJC(2))//4
//求斐波拉契数列Fibonacci中的第 n个数是多少?
//1 1 2 3 5 8 13 21 ...
function Fibonacci(n){
    var n1=1;
    var n2=1;
    var num = 1;
    for(var i=3;i<=n;i++){
        num = n1+n2;
        n1=n2;
        n2=num;
    }
    return num;
}
//输入某年某月某日,判断这一天是这一年的第几天?
  function isRn(year){
        if((year%4===0&&year%100!==0)||year%400===0){
            return true;
        }
        return false;
    }

 function getDayNum(year,month,day){
    //每个月的天数  假设二月是28天
    //如果是1月直接返回天数 day
    //如果不是1月,要累加之前每个月的天数+day
    var days=day;//总共的天数
    var months=[31,28,31,30,31,30,31,31,30,31,30,31];
    for(var i=0;i<month-1;i++){
        days+=month[i];
    }
    //如果是闰年并且月份大于2  days+1
    //闰年:能被4整除并且不能被100整除,或者能被400整除
  if(month>2&&isRn(year)){
       days++;
  }
    return days;
 }
递归
方法自身调用,还要有结束条件
//从前有座山,山里有个庙...
var i=0;
function say(){
    console.log("从前有座山,山里有个庙..."+i);
    i++;
    if(i<10){
        say();
    }
}
say()
//  求 n 个数的累加 
function getSum(n){
  if(typeof num !=="number" || num<=0 || num%1 !== 0){
        console.log("有本事你传个正整数试试");
        return 0;
   }
   if(n===1){
        return 1;
    }
   return  n+getSum(n-1)
}
console.log(getSum(100))//5050
//输入一个数,求这个数的各位数字之和
//123  
//123%10=3  123/10=12.3
//12%10=2   12/10=1.2
//1%10=1  1/10=0.1

function getSum(n){
   //结束条件
   if(n<10){
        return n;
    }
   return  n%10+getSum(parseInt(n/10));
}
//求斐波拉契数列Fibonacci中的第 n个数是多少?
function Fibonacci(n){
    if(typeof n !=="number" || n<=0 || n%1 !== 0){
        return "咱认真传值可以伐";
   }
    if(n===1||n===2){
        return 1;
    }
    return  Fibonacci(n-1) + Fibonacci(n-2);
}
函数可以作为另一个函数的参数
//求两个数数学运算的结果
/**
 * 
 * @param a  {number}
 * @param b {number}
 * @param fn {function}
 */
function getResult(a, b, fn){
    console.log(a, b, fn)//5, 6 ,function (x, y){return x+y;}
    return  fn(a, b);//11 函数getResult() 返回结果是一个函数fn(); 
}
var f1 = function(x, y){
    return x+y;
};
var result= getResult(5, 6, f1);// 把5, 6, f1三个参数传个函数getResult()
console.log(result)
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消