【发布时间】:2018-06-17 13:16:38
【问题描述】:
我正在尝试编写递归方法,如果存在从 a[0] 到 a[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]);
}
【问题讨论】:
-
什么是
return isWay(int[] a, int ind, int way)?我猜你想为此设置默认值……对吧? -
你试过写(单元)测试用例吗?
-
@Lino 更具体地说,
ind和way是什么?此外,不会编译,但如果错误已修复(return isWay(int[] a, int ind, int way)->return isWay(a, 0, a.length - 1);和way > a.length-1, || way < 0->way > a.length-1 || way < 0),它适用于您的示例输入 -
a[a.length-1] 是 5,它是最后一个元素....您需要更好地描述您要解决的问题。您想看看是否可以从第一个元素开始到达最后一个元素并在元素之间求和/减去?
标签: java arrays recursion path