当前位置: 首页 > 知识库问答 >
问题:

数组中的Java递归-从数组[0]到数组[长度-1]的查找路径

公西博实
2023-03-14

我正在尝试编写递归方法,如果存在从[0]到[a.length-1]的路径,当您可以对a[I]求和或求减法时,该方法将返回true。例如,在数组a={2,4,1,6,4,2,4,3,5}中,该方法返回true,因为0 2-1 4 2-3 4=8=a[a.length-1]。我尝试了一些方法,但我得到了堆栈溢出或错误的输出。

public static boolean isWay(int[] a){

return isWay(int[] a, int ind, int way)
}

private static boolean isWay(int[] a, int ind, int way){
   if(way==0)
   return true;
   if(way > a.length-1, || way < 0 )
   return false;
   if(ind > a.length-1 || ind < 0)
   return false;

   return isWay(a, ind+a[ind], way-a[ind]) || isWay(a, ind-a[ind],way+a[ind]);
}

共有2个答案

段干楚青
2023-03-14
    public static boolean isWay(int[] a)
{
    return isWay(a,0);
}
private static boolean isWay(int[] a, int ind)
{
    if  (ind < 0 || ind>a.length-1)
        return false;
    if  (a[ind]<0)
        return false;
    if  (ind == a.length-1)
        return true;
    int tmp = a[ind];
    a[ind] = -1;
    return  isWay(a, ind+tmp) || isWay(a, ind-tmp);
}
端木高卓
2023-03-14

试试这段代码。它从起点(索引0)搜索到终点(索引a.length-1)。

public static void main(String[] args) {
    System.out.println(isWay(new int[] {2,4,1,6,4,2,4,3,5}, 0));
    System.out.println(isWay(new int[] {2,7,3,8,5,1,2,1,2}, 0));
    System.out.println(isWay(new int[] {7,7,7,7}, 0));
}

public static boolean isWay(int[] a, int index) {
    if (index == a.length-1) return true;
    if (index > a.length-1 || index < 0) return false;
    return isWay(a, index+a[index]) || isWay(a, index-a[index]);
}
 类似资料:
  • 我想知道我可以在给定的数组中计算2条特定路径吗。 > < li> 如何返回从[0][0]到[m][n]的最短(或最长)路径?我设法递归地遍历数组,但是我不知道如何“保存”路径并检查哪一个返回的路径更小。 第二个请求是一个我已经纠结了很长时间的问题,但我看到了关于使用和计算这些数组中的值的其他问题。

  • 给定一个只有和的数组,求取和数目相等的最大子数组的长度。例如,给定一个数组 编写递归函数。这个函数接受3个输入:一个数组-A,它的第一个元素的索引-start,最后一个元素的索引-end,并返回largestsubarray的大小。如果没有找到数量相等的子数组,则函数应返回0。 如何修复此代码?请帮忙。谢了。

  • 问题内容: 如何找到二维数组中的行和列数? 例如, 应该显示为3行2列。 问题答案: 像这样: 假定所有子列表具有相同的长度(也就是说,它不是锯齿状的数组)。

  • 问题内容: 我声明了一个数组,如下所示: 然后,我为数组分配了以下值: 然后,我声明并初始化了一个整数变量: 这对于查找实际大小将很有用,但是有什么方法可以找到数组的逻辑大小吗? 问题答案: 它包含分配的大小。未分配的指标将包含默认值,即对。

  • 在PHP中,检查数组是否为递归数组的最佳方法是什么? 给定以下代码: 从PHP手册: print\u r()在到达数组的第三个元素时将显示递归。 似乎没有其他方法可以扫描数组中的递归引用,因此如果需要检查它们,则必须使用print\u r()及其第二个参数来捕获输出并查找单词RECURSION。 还有更优雅的检查方式吗? 附:这就是我如何使用regex和print\u r()检查和获取递归数组键的

  • 问题内容: 我需要获取行和列的2D数组的长度。我已经使用以下代码成功完成了此操作: 这将按预期打印出5、10。 现在看一下这一行: 注意,实际上我必须引用特定的行才能获取列的长度。对我来说,这似乎非常丑陋。此外,如果数组定义为: 然后,当尝试获取长度时,代码将失败。有其他方法(更智能)吗? 问题答案: 考虑 每行的列长不同。如果要通过固定大小的2D数组支持某些数据,请在包装器类中为固定值提供吸气剂