我只是想知道这是否是一个有效的递归示例而不使用else语句。我见过的大多数递归示例都使用if-else格式。但是,我的示例不使用else语句。问题是将数组从一个索引位置填充到另一个索引位置。例如,使用从位置2到5的指定元素填充数组。
public static void fill(int[] array, int element, int from, int to) {
if (from <= to) {
array[from] = element;
fill(array, element, from + 1, to)
}
}
谢谢!
答案 0 :(得分:0)
它是一个有效的递归,因为没有返回值。这意味着如果不满足条件,则无需再做任何工作,方法只会返回。
如果方法有返回值,则必须在else子句中放置一些return语句(或者在if子句之后)。
答案 1 :(得分:0)
是的,这是一种有效的递归方式。由于返回类型为void
,因此无需在最后返回值。您的代码相当于:
public static void fill(int[] array, int element, int from, int to) {
if (from <= to) {
array[from] = element;
fill(array, element, from + 1, to);
} else {}
}
然而,如果你需要返回一个值,那么你需要一个有意义的else语句,因为所有的代码路径都必须返回一个正确类型的值 - 在你的情况下都是“如果“和”其他“分支。
答案 2 :(得分:0)
代码有效且应该有效。当然,迭代在这里更合适,但递归也可以。当from > to
您的方法结束递归调用时。