我在接受采访时被问到这个问题。请求我将整数数组加入像Fibonacci系列类型。
就像我们添加array[]={2,6,3,1}
一样,输出应为31。
2 + 6 = 8,8 + 3 = 11,11 + 1 = 12,现在加8 + 11 + 12 = 31?
我怎样才能用Java做到这一点?
答案 0 :(得分:1)
这很有趣!最简单的解决方案是使用嵌套的for
并迭代加上前一个值。
然而,如果我们考虑一下,你的例子是线性的,不能用线性来完成吗?是的,它可以。所以我们现在知道我们必须只使用一个(嵌套)for
。我们必须在您的示例{2,6}
,{2,6,3}
和{2,6,3,1}
中跟踪我们一起添加的值,以便我们可以使用另一个Array
尺寸小于输入Array
的那个。
但是,我们不能直接添加它们吗?不是存储我们计算的每个值,而是存储前一个值和到目前为止的总和,结果:
public static int arrFibSum (int arr[]) {
int sum = 0;
for (int i = 0; i < arr.length-1; i++) {
sum += sum + arr[i+1];
}
return sum;
}
需要Array
,与您的{2,6,3,1}
一样
将之前的值设置为上次计算的值。
根据前一个和下一个计算下一个值。
在此示例中,它打印出:31
。
对于未来:尝试编写一些伪代码。您写下了一个示例,尝试将其写为通用,最后您已准备好开始实现它。
我之所以尝试逐步编写流程是有原因的。
根据Erik的评论更新。