2013-03-14 52 views
1

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

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

这是一些测试情况下,给定输出: image of output

my faulty recursive code

不管怎么说,这是我的错误递归代码的屏幕截图。 请给我建议,哪里出错了。我在这方面耗费了大量时间,但仍然无法达成解决方案。

回答

2
  1. 我想你应该打印如果(行== 0 & &的cols == 0),因为它是当你为什么要使用路径+ =“N”到达B点
  2. 的情况下在第一个ne电话回报?这将在原路径中添加“N”,然后在第二次调用中获得路径+“N”+“E”。

尝试以下操作:

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; 
} 
+0

非常感谢。有效。但我完全无法理解代码。为什么我们不得不将代码分解成两种情况:if(rows!= 0)和if(cols!= 0)? – uohzxela 2013-03-14 18:15:09

+0

如果rows == 0调用行-1将是不必要的(并且不正确,意味着rows = -1 ??) - 我们已经到达了目标坐标,现在我们只需要向其他方向移动 – 2013-03-14 18:41:00