2015-12-05 74 views
-3

我在一次採訪中被問到了這個問題。讓我總結一個像斐波那契數列類型的整數數組。如何在Java中整合一個整數數組,如斐波那契數列

一樣,如果我們添加array[]={2,6,3,1}輸出應爲31

2 + 6 = 8,8 + 3 = 11,11 + 1 = 12,現在添加8 + 11 + 12 = 31?

我該如何在Java中做到這一點?

+0

LoL!顯示您的嘗試(僞代碼)。 – Forkmohit

+0

幫助將始終在霍格沃茨給...這只是不正確的方式來問問題...提供你得到的代碼片段... – Naruto

+1

它應該採取比原來小一個數組... ...保持每次存儲總和到它...然後總結所有元素使用int sum = Arrays.stream(myIntArray) .sum(); – Naruto

回答

1

這很有趣!最簡單的解決方案是使用嵌套for s並迭代僅在前一個值時才添加。

但是,如果我們考慮一下,你的例子是線性的,難道它不是線性的嗎?是的,它可以。所以我們現在知道我們只能使用一個(嵌套)for。我們必須跟蹤我們已經加在一起的值,例如{2,6}{2,6,3}{2,6,3,1},所以我們可以使用另一個Array,其大小比輸入Array小1。

但是,我們不能直接添加它們嗎?

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}

  1. 設置前值而不是存儲每次我們計算我們剛剛存儲的前一個也是迄今總和,結果值的,到最後一次計算的值。

  2. 根據上一個和下一個計算下一個值。

在這個例子中,它打印出來:31


未來:嘗試編寫一些僞代碼。你寫下了一個例子,試着把它寫成通用的,最後你已經準備好開始實現它。

有一個原因,我試圖寫上述步驟的過程。

從Erik的評論更新。

+0

感謝Emz..It工作並感謝您以美妙的方式分享.. – PritamGhosh

+0

不客氣。現在給我兩個好處(按重要性排列):反思你的問題和問題。然後接受(當且僅當它完全回答您的問題)和/或高舉(如果它幫助您獲得答案或對您通常有用)。 – Emz

+1

@Emz至少你試過了;)https://pbs.twimg.com/media/CA4uIfNXIAATt7X.png – Droidman