递归方法写出阶乘以及菲波那切数列

当我们需要使用递归来完成某些操作的时候,我们先要了解什么是递归

什么是递归?

递归,就是在运行的过程中调用自己。

一般来说,递归需要有边界条件、递归前进段和递归返回段。

当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

举个例子:

1 function fun(){
2 console.log(new Date())
3 setTimeout(fun,1000)
4 }
5 fun()
第5行调用fun,fun内的一次定时器每隔1s再调用fun,在函数内部调用自己,这就是递归。

跟循环相同的是,递归是需要有边界条件的,否则就变成了死循环。

递归-阶乘

1 function fun(n){
2 if(n == 1 || n == 0){
3 return 1;
4 }
5 return n * arguments.callee(n-1)
6 }
7 console.log(fun(10))

设置了if语句为递归限制了边界。

上面我运用了arguments.callee,那什么是arguments.callee呢?

arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文,简单点就是指代的就是这个函数的本身,这有利于匿名函数的递归或者保证函数的封装性。

利用 callee 的属性,返回正被执行的 Function 对象的方法ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值