14 函数案例

159 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

斐波那契数列

需求:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑起一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第三个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么一对兔子一年内(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的值都要传到下一个月,进行新的一组

14 函数案例01.jpg

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