【发布时间】:2016-06-11 20:42:13
【问题描述】:
我有一个练习,我遇到了错误,很想帮助解决错误以及如何解决练习。
编写一个递归函数,接收一组数字和一个数字 9-1 之间。如果存在连续性,则该函数返回 true numbers 从 1 到数字,否则返回 false。
它总是带给我真实的,没有错误。
例子:
对于数组
3,1,2,3,4,6,3和数字4返回到true对于数组
3,1,2,1,2,3,5和数字4返回false
代码:
public static boolean continuityOfnumbers(int[] arr, int n) {
int counter = 0;
int index = arr.length - 1;
if (n == 0)
return true;
if (arr[index] - 1 == arr[index - 1])
counter += 1;
index--;
return continuityOfnumbers(arr, n - 1);
}
【问题讨论】:
-
查看您的代码:它所做的只是
return true;或将递归调用的结果返回给它自己。现在问:既然它只返回true或调用自身的结果,它怎么可能返回false? -
快速建议:您传递一个变量
n并将其用于递归的“返回真”停止条件。但是,您永远不会将它用于递归步骤。尝试删除counter和index,然后使用更多n。 -
你更大的问题是你只看数组中的最后一个元素。您每次都需要做以下两件事之一:将“开始”点(
1应该在的位置)向前移动,或者查看之后的下一个元素,增加比较值。 -
我不确定“数字从1到数字的连续性”的解释。这些示例并未完全涵盖它。这是否意味着数组中某处必须有一个连续的
1,2,3,4序列,还是仅仅意味着数字1、2、3和4必须出现在某处在数组中?您的代码似乎表明了第一个选项。 -
你问了,收到了三个回复,却从未选择答案或给 cmets,这被认为是粗鲁的