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,