递归使用的思路

本文探讨了递归调用的4条基本法则,包括基准情形、不断推进、设计法则和合成效应法则,并区分了需要返回值和不需要返回值的递归情形。通过举例说明,如构建三角形的抽象和汉诺塔问题,阐述了如何将大问题分解为小问题并进行递归处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4条基本法则

  1. 基准情形(要考虑方法的每个参数,一般是某些参数为某个值时另一些参数需要某些限制时
  2. 不断推进(推向基准情形)
  3. 设计法则(即问题分化前与第一次分化后的相互转换关系)
  4. 合成效应法则:在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性工作

思想

在处理(大的)问题时,发现可把该问题分成多个小的问题,处理方法都一样,只是参数设置不同,此时就要看分化问题实质是分化哪些参数

在此我把递归方法分成两种情形:需要返回值 / 不需要返回值的情形

1.需要返回值时

脑中抽象出/构想出一个三角形△,顶点为大问题(未分化),底边为基准情形,从顶点可一步步向基准分化
举个栗子:

//一道面试题,一个骰子掷10次,各次结果的和为50有多少种可能
/*此时构建的三角形:
顶点--------第10次投掷后和为50
往下分化一次--[6,44](6表示第10次投掷结果,44为前9次结果的和),[5,45],[4,46],[3,47],[2,48],[1,49]
底边--------6,5,4,3,2,1*/
public class Dice {
    //t:投掷次数;s:各次结果的和
    static int f(int t,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值