无法通过递归实现东北路径

时间:2013-03-14 17:44:14

标签: algorithm recursion

我应该使用递归来输出从A点到B点的唯一东北路径ne(x,y)的总数,其中B是向北x行和在A以东y列。另外,我需要打印可能的唯一NE路径。

我知道如何使用递归来获取唯一路径的总数。但是,我仍然坚持使用递归来正确打印所有NE路径。

这是一些测试用例的给定输出: image of output

my faulty recursive code

无论如何,这是我错误的递归代码的截图。 哪里出错了,请给我建议。我已经花了很多时间在这上面,但我仍然无法达成解决方案。

1 个答案:

答案 0 :(得分:2)

  1. 我认为你应该打印if(rows == 0&& cols == 0),因为当你到达B点时就是这种情况。
  2. 为什么你在第一个ne调用中使用路径+ =“N”作为回报?这将在原始路径中添加“N”,然后在第二次调用中获得路径+“N”+“E”。
  3. 请尝试以下操作:

    public static int ne( int rows, int cols, String path )
    {
       if( rows == 0 && cols == 0 )
       {
          System.out.println(path);
          return 1;
       }
       int npats = 0, wpaths = 0;
       if( rows != 0 )
          npaths = ne( rows-1, cols, path+"N" );
       if( cols != 0 )
          wpaths = ne( rows, cols-1, path+"E" );
       return npaths + wpaths;
    }