从典范题目学递归:3X4的方格 从左上角A走到右下角B 只能向右向下走 一共有若干种走法?

题目:3X4的方格 从左上角A走到右下角B 只能向右向下走 一共有若干种走法?

图形:题目转化为图形以后就是,从(1, 1)方格走到(3, 4)方格有若干种计划(每次走一格)?

《从典范题目学递归:3X4的方格 从左上角A走到右下角B 只能向右向下走 一共有若干种走法?》

剖析:

1、依据题目我们晓得只能往右走或许向下走,那末从(2, 4)格子走到(3, 4)格子只要一种计划,从(3, 3)格子走到(3, 4)格子也只要一种计划。

2、以此类推,到某个格子A的走法 = A上面的格子走法 + A左侧的格子走法;

3、假如遇到第一行或许第一列的格子,那末走法只要一种

4、假如遇到第一个格子,我们以为不需要走,即走法为0

总结:

1、这类把一个庞杂的题目分解成若干个有雷同规律的子题目的要领,我们称之为递归。

2、递归由递归前提和递归出口构成,个中递归出口异常重要。

3、剖析中的第2点我们称之为递归前提。

4、剖析中的点3、4点我们称之为递归出口(返回明白的值)。

代码:

// N X M的方格 从左上角A(1, 1)走到右下角B(N, M) 只能向右向下走 一共有若干种走法?
function calc(x, y){
    // 坐标(1, 1)  递归出口
    if(x == 1 && y == 1) return 0;

    // 坐标(x, 1) (1, y) 递归出口
    if(x == 1 || y == 1) return 1;
    
    // 递归前提
    if(x > 1 && y > 1) {
        return calc(x-1, y) + calc(x, y-1);
    }
       
    // 不符合前提,直接返回0
    return 0;
}

calc(3, 4); // 10

题目:

依据上面的剖析,我们晓得在递归的过程当中,会有许多反复的格子,异常糟蹋机能,当盘算的数字越大,递归的机能也会越低,怎样进步递归的机能呢?下次我们再引见(剪枝)。

    原文作者:Eric
    原文地址: https://segmentfault.com/a/1190000019377021
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞