使用递归方法在两个数字之间求和

时间:2016-01-07 19:32:57

标签: ruby recursion

我想用递归方法对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

我会使用一个计数器,但为此我需要创建一个变量,每次该函数调用自身时,该变量将被重置为其原始值。

有办法做到这一点吗?或者以不同的方式组织方法?

1 个答案:

答案 0 :(得分: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))