js递归

什么是递归

在程序中,所谓的递归就是函数直接调用自己或者间接调用自己

递归思想就是将一个问题转换为一个已解决的问题

递归的概念

在程序中函数直接或间接调用自己
1.直接调用自己
2.间接调用自己
跳出结构,有了跳出才有结果

递归的思想

递归的调用,最终还是要转换为自己这个函数
1.如果有个函数foo,如果他是递归函数,到最后问题还是转换为函数foo的形式
2.递归的思想就是将一个未知问题转换为一个已解决的问题来实现

function foo(){
 		 ...
       foo(...)
         ...
    }

递归的技巧

1.假设递归函数已经写好
2.寻找递推关系
3. 将递推关系的结构转换为递归体
4. 将临界条件加入到递归体中

Fibonacci数列第N项

var fib = function (n){
  if(n<=2){
    return 1;
  }
  return fib(n-1) + fib(n-2);  
}
console.log(fib(5));

递归的总结

两个必要因素:
递归方程,递归结束条件。
算法核心:

  1. 在有限次可预见性结果中,找到结果与上一次结果之间的关系。
  2. f(n)与f(n-1)的关系有时候很简单,如同走楼梯,状态单一;又有时如同细胞分裂,多种状态组合影响结果。
  3. 关键在于梳理清楚本次结果和上一次结果的关系有哪些方面或是因素。
  4. 在草稿纸上写出前几次的结果,或者画图,这样更容易找到规律,这种规律实际上就是递归方程。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值