【发布时间】:2016-01-20 23:26:21
【问题描述】:
我有数组[0,1,3,4,1]。使用这个数组,我需要编写一个递归函数:
- 转到下一个元素,或
- 跳过下一个元素并转到它后面的元素(最多只能跳过 1 个元素)
条件是它必须是可能的最小数字。这个问题的解决方法如下:
- 从 0 开始
- 跳过
1并转到3 - 跳过
4并转到1 - 添加未跳过的元素并将其返回
我已经用它的基本情况启动了这个函数:
private int play(int[] a, int first, int last) {
int result = 0;
// base case
if (first == last){
return a[first];
}
else{
//result = play(a,first+1,last);
//System.out.println(result);
}
return result;
}
与first = 0 和last = array_length -1。请注意,数组可以包含任意数量的元素,所以假设我有数组[0 4 23 566 34 45 555 11 34 35 45 65 55 98 344],那么最低的总数将是 591。
请多多包涵,我不熟悉这种递归。提前致谢
【问题讨论】:
-
所以它假设返回你没有跳过的数字全部加起来?
-
@3kings 是的,这是正确的
-
所以你可以跳过数字,但不能连续跳过一个以上的数字?
-
@tobias_k 是的,该函数不能跳过多个元素
-
你在正确的轨道上,你只需要确定递归调用是使用first+1还是first+2(使用你提到的条件)。提示:当心 first+2 超出 last 的情况。