几道经典递归算法案例

本文介绍了递归的基本概念,包括头递归和尾递归,并通过计算球的反弹高度和总路径、阶乘计算以及斐波那契数列等经典案例详细解释了递归的使用。递归在解决特定问题时能够简化代码,但要注意避免无限递归导致的问题。案例中展示了如何使用普通递归和尾递归实现同一问题,强调了尾递归在资源占用上的优势。
摘要由CSDN通过智能技术生成

一)递归介绍

定义:

1、在函数体中直接或间接的调用自身的一种方法。

2、必须要有边界值,也就是停止的条件。

头递归函数调用时不是传递本次计算的结果,而是把当前的调用状态传递,相当于要一直记录上一次函数的调用状态。这种方式会耗内存资源,当计算的值较大,递归层次较深时,容易报内存错误。

尾递归函数调用时传递本次计算的结果,不需要记录函数的调用状态,由于一直是在尾部计算,大大减少了资源占用。

备注:递归也不是能无限计算下去的,只要是计算,就会有计算瓶颈限制。如果要一直计算,递归和死循环就差不多了。

二)递归案例

(一)计算球的反弹高度和总路径?

描述:一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

普通方式:h代表初始高度,n代表反弹次数

public static double fn(double h, int n) {
	if 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值