2016-09-16 105 views
-2

的問題的解決方案,以一個行總和奇數方法:我需要了解在紅寶石

從行索引計算該三角形的行總和。

row_sum_odd_numbers(1); # 1 
row_sum_odd_numbers(2); # 3 + 5 = 8 
row_sum_odd_numbers(3); # 7 + 9 + 11 = 27 

...

Test.assert_equals(row_sum_odd_numbers(1), 1) 

Test.assert_equals(row_sum_odd_numbers(2), 8) 

Test.assert_equals(row_sum_odd_numbers(13), 2197) 

Test.assert_equals(row_sum_odd_numbers(19), 6859) 

Test.assert_equals(row_sum_odd_numbers(41), 68921) 

的解決問題的辦法如下:

def row_sum_odd_numbers(n) 
    return n**3 
end 

我明白,這代碼返回答案。我不明白它是如何返回答案的。爲什麼n的第3個指數返回奇數的行和?

+0

這只是一個數學技巧。它不能解釋,但你可以得到的模式! –

+1

這可能有助於顯示三角形和/或問題定義。三角形的特質使它解決了這個簡單的問題。也許這個問題可以適用於maths.stackexchange,如果從三角形的設計中得到n ** 3似乎是模糊的。 –

+4

我投票結束這個問題作爲題外話題,因爲它是關於數學,而不是編程。 –

回答

2

這只是數學計算:)

可以找出哪些是第一個被加數: 第一加數之前,我們有1 + 2 + 3 + ... + n-1奇數,其金額爲((n-1)*n)/2。所以,在他們之後的第一個加載是
((n-1)*n)/2 * 2 + 1 = (n-1)*n + 1

現在我們應該只計算我們的總和:
row_sum_odd_numbers(n)= (n-1)*n + 1 + (n-1)*n + 3 + (n-1)*n + 5 +...+ (n-1)*n + 2*n - 1 =
(n-1)*n*n + 1 + 3 + 5 + ... + 2*n -1 = n^3 - n^2 + n^2 = n^3

+0

請格式化以提高可讀性。它將幫助OP和那些正在尋找類似解決方案的人。 –

0

首先,需要計算第k行開頭的數字。如果你畫的三角形,就不難認識到,這是

1 + \sum_{j=1}^{k-1}2*j = 
         = 1 + (2 + ... + 2*(k-1)) 
         = 1 + (2 + 2(k-1))/2*(k-1) 
         = k^2 - k + 1 

三角形的相應的行數的總和就等於k號開始k^2 - k + 12增量的總和。這樣的結果是

k*(k^2 - k + 1 + k^2 - k + 1 + (k-1)*2)/2 = k*k^2 = k^3 
1

行N前有1+2+..+(n-1)奇數。由於這是一個等差級數的元素的總和,它總計因此

n(n-1)/2 

的第一個號碼在n行是第n(n-1)/2 + 1奇數。

n第奇數是

2n - 1 

所以在n行第一(奇數)數是

2(n(n-1)/2 + 1) - 1 = n(n-1) + 1 

使用該結果,在n行的最後一個(奇數)數目等於第n+1行減去2。因此

(n+1)n + 1 - 2 = n(n+1) - 1 

nn奇數(形成代數進展)的總和是

n(n(n-1) + 1 + n(n+1) - 1)/2 = n^3 

證明的斷言。