没有Else语句的递归

时间:2014-10-25 17:29:29

标签: java recursion

我只是想知道这是否是一个有效的递归示例而不使用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)
   }
}

谢谢!

3 个答案:

答案 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您的方法结束递归调用时。