【无标题】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
递归“,在Java学习中存在着一定的难度,以下由我所总结关于”递归‘的一些知识要点。


提示:以下是本篇文章正文内容,下面案例可供参考

一、递归是什么?

概念:一个方法在执行过程中调用自身。
特点:

  1. 起始条件("递"的结束条件,“归‘的 起始条件)

在这里插入图片描述

  1. 递归公式

必要条件:

  1. 将原问题划分成其子问题(子问题与原问题的解法相同)
  2. 有递归出口

二、递归的执行过程分析

例题:

求 3!,利用递归实现。

代码:

在这里插入图片描述

代码分析

起始条件 n==1
递归方程 n×fac(n-1)

在这里插入图片描述

三、递归中的内存:

当一个原方法在执行过程中,在栈帧中开辟内存fac(3),进入子方法后,开辟新的内存空间fac(2),执行fac(2)中,开辟fac(1)的内存空间,当fac(1)被return给fac(2)数字1 后,此时fac(1)的内存被销毁,fac(2)return给fac(3)数字2后,此时fac(2)内存被销毁。当fac(3)return temp==6时,fac(3),在栈中内存被销毁。
在这里插入图片描述

总结:思考递归问题时,需要横向思考递归的特点(1.递推公式,2.起始条件),从小问题出发,能更好帮助我们思考出递推公式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值