04-JavaScript函数和递归

本文介绍了JavaScript中的函数,包括函数定义、参数特性和返回值。重点讲解了函数的不定参数和arguments对象的使用,展示了如何实现任意数字相加的函数。接着探讨了递归的概念,强调了编写递归函数时寻找规律和确定出口的重要性,并给出了递归实现阶乘和斐波那契数列的例子。递归虽然简洁,但可能导致执行效率降低。
摘要由CSDN通过智能技术生成

一、函数

函数定义:

  • 函数声明
function f1(){

    //TODO

}

f1(); //函数调用
  • 函数表达式(函数表达式又称为匿名函数表达式)
var test = function(){

    //TODO

}

text(); //函数调用

 


 函数参数:

  • 形参:形式参数。是在定义函数的时候使用的参数,目的是用来接收调用该函数时传入的参数。
function f1(parameter1,parameter2){

        //parameter1和parameter2 就是形参
        //形参在这里并不是一个实际的值,只是一个形式参数,类似于占位符,当这个函数被调用并传入参数时,形参才会有真正对应的实际值
}
  • 实参:实际参数。是在调用函数时传入的参数,传入的实参会赋值给形参。
f1(10,20)   //10,20就是实参

//调用函数传入实参后,f1中的形参 parameter1=10,parameter2=20

1.在JS中函数的参数有个特点就是,它是不定参数,也就是说它的参数的个数没有限制,而且在你定义形参和传入实参时个数也可以不同。

function f2(a,b){
    console.log(a,b)
}
f2(1);  // 1 undefined

2.arguments 是一个对应于传递给函数的参数的类数组对象。我们可以用来判断传入函数中的实参个数

function f3(a,b,c,d){

    var number = arguments.length;
    console.log(number);
}
f3(1,2); // 2

我们可以利用arguments和js的不定参数特性来实现:任意个数字相加的函数

function sum (){
    var num = arguments.length;
    var result = 0;
    for (var i = 0; i < num;i++){
        result += arguments[i];
    }
    console.log(result);
}
sum(1,2,3,4,5,6,7,8,9,10); // 55 ,在这里你可以传入任意个参数
sum(1,1);                 //2
sum(100,200,1000) ;      //1300

 


 函数返回值:

  • return 用来终止该函数的执行并返回一个值
function f4(a,b){
    return a+b;
}
var c = f4(1,2);
console.log(c); //3

 

二、递归

  •  递归函数:就是在一个函数通过名字调用自身的情况下构成的

  • 写递归要记住两点:1.找规律。2.找出口,如果没出口那么就是一个死循环的函数。

// 经典的递归阶乘函数
function factorial(n){
    if (n<=1){
        return 1;
    }
    return n * factorial(n-1);
}


//规律: 5! = 5 * 4 * 3 * 2 * 1
//       n! = n * (n-1)

//出口:0的阶乘为1,1的阶乘也为1,可以看出出口就是为1的情况
  • 阶乘实现斐波那契数列
function fb(n){
    if(n == 1 || n == 2){
        return 1;
    }
    return fb(n-1)+fb(n-2);
}

递归有个优点是可以使代码简洁,但是执行速度慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值