2016-01-07 58 views
0

我想用遞歸方法求和包含min和max之間的所有整數。例如:min = 1, max= 5, sum = 1 + 2 + 3 + 4 + 5用遞歸方法在兩個數之間求和的整數

我的問題是,我無法找到如何停止「循環」由遞歸性創建:

def sum_recursive(min, max) 
    return min if     #I don't know how to stop it 
    min += (min + 1) 
    sum_recursive(min, max) 
end 

我會用一個計數器,但爲了這個,我需要創建一個每次函數調用時都會重置爲原始值的變量。

有沒有辦法做到這一點?或者以不同的方式來組織該方法?

+0

'如果分== max'。你也應該在主要情況下返回'min + sum_recursive(min,max)'。 – ndn

+0

適用於1 + 2 +3,但不適用於更多。即使2 + 3 + 4也不行,因爲我每次做min + =(min + 1) –

+1

順便說一句:顯而易見的算術解法當然是'max *(max-1)/ 2 - min *(min -1)/ 2'。 –

回答

6

這應該給一個正確的答案:

def sum_recursive(min, max) 
    return min if min == max 
    min + sum_recursive(min + 1, max) 
end 

的過程很簡單:

sum_recursive(1, 3)1 + sum_recursive(2, 3)1 + (2 + sum_recursive(3, 3))1 + (2 + (3))