基础算法(零)---递归

当一个函数用它自己来定义时就称为是递归(recursive)的。Java允许函数是递归的。

递归过程的执行总是一个过程体未执行完,就带着本次执行的结果又进入另一轮过程体的执行。。。如此反复,不断深入,直到某次过程的执行遇到终止递归调用的条件成立时,则不在深入,而执行本次的过程体余下的部分,然后又返货到上一次代用的过程体中,执行余下的部分。。。如此重复,直到回到起始位置上,才最终结束整个递归过程,得到相应的结果。

逐步深入,逐步返回

Tips:对于数值计算使用递归通常不是一个好主意

一般首先考虑的是一个能完成任务的解决方案,其次考虑的是解决方案的效率

递归的基本准则

  1. 基准情况(base case):保修总要有某些基准的情形,它们不用递归就能求解。
  2. 不断推进(making progress):对于那些要递归求解的情形,递归调用必须总能
    够朝着一个基准情形推进。
  3. 设计法则 (design rule):假设所以的递归调用都能运行。
  4. 合成效益法则(compound interest rule):在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。

    递归的例子

函数f(0)=0且f(x)=2f(x-1)+x*x


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值