14 函数案例

斐波那契数列
需求:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑起一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第三个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么一对兔子一年内(12个月)能繁殖成多少对?
每月兔子数:1,1,2,3,5,8,13,21,34,55,89,144
斐波那契数列的规律:第一项 + 第二项 = 第三项

伪代码:
从第三个月开始

var num1 = 1; //第一个月
var num2 = 2; //第二个月
var sum = num1 + num2; //第三个月

第四个月

var num1 = num2; //第二个月
var num2 = sum; //第三个月
var sum = num1 + num2; //第四个月

第五个月

var num1 = num2; //第三个月
var num2 = sum; //第四个月
var sum = num1 + num2; //第五个月

代码:

var num1 = 1;
var num2 = 1;
var sum = 0;
for(var i = 3; i <= 12; i++){
   sum = num1 + num2;
   num1 = num2;
   num2 = sum;
}
console.log(sum);

注:每三个为一组,第一组三个一月,二月,三月、第二组三个二月,三月,四月、第三组三个三月,四月,五月,以此类推。所以num1,num2,sum的值都要传到下一个月,进行新的一组
在这里插入图片描述

arguments
arguments——伪数组

求N个数字和 arguments可以获取到用户传递的数据

function fun(){
    console.log(arguments.length);
}
fun(10,20,30,40,50); //5个参数

需求:通过arguments来计算求和

function getSum(){
    var sum = 0;
    for(var i = 0; i < arguments.length; i++){
       sum += arguments[i]; //用到伪数组里面的数
    }
    return sum;
}
var result = getSum(10,20,30);
console.log(result); //60

匿名函数——没有名字的函数

var f1 = function(){ //f1为变量名
   console.log("匿名函数");
}; //加上;
f1(); //调用函数

函数的自调用——函数自己调用自己,自执行函数
用处:js初始化,可以用自调用函数,不用考虑重名问题,函数可以直接自己执行

(function(){
    console.log("我是自执行函数");
})();

练习:
需求:用函数封装斐波那契数列

function getFib(num){
        var num1 = 1;
        var num2 = 1;
        var sum = 0;
        for(var i = 3; i <= num; i++){
           sum = num1 + num2;
           num1 = num2;
           num2 = sum;
        }
        return sum;
    }
    var result = getFib(12);
    console.log(result);

需求:定义一个函数输入某年某月某日,判断这一天是这一年的第几天
假设输入2022-2-18则输出49

 function getDays(year,month,day){
        var days = day; //先定义一个变量来存储天数
        if(month == 1){ //此时表示1月
          return days; //遇到return代码停止,后面就不再执行了
        }
        // 定义一个数组来存储每个月的天数
        var months = [31,28,31,30,31,30,31,31,30,31,30,31];
        for(var i = 0; i < month - 1; i++){ //输入的月数-1
           days += months[i];
        }
        return days;
    }
    var result = getDays(2021,2,18);
    console.log(result); //49
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值