我正在学习 Scala 课程,给出的示例之一是 sumInts 函数,其定义如下:
  def sumInts(a: Int, b: Int) : Int = 
    if(a > b) 0  
    else a + sumInts(a + 1 , b)
我试图通过在迭代时输出一些值来更好地理解这个函数:
class SumInts {
      def sumInts(a: Int, b: Int) : Int = 
        if(a > b) 0 else 
        {     
          println(a + " + sumInts("+(a + 1)+" , "+b+")")       
          val res1 = sumInts(a + 1 , b)
          val res2 = a
          val res3 = res1 + res2
          println("res1 is : "+res1+", res2 is "+res2+", res3 is "+res3)
          res3
        }
}
所以代码:
object SumIntsMain {
    def main(args: Array[String]) {
      println(new SumInts().sumInts(3 , 6));
  }
}
返回输出:
3 + sumInts(4 , 6)
4 + sumInts(5 , 6)
5 + sumInts(6 , 6)
6 + sumInts(7 , 6)
res1 is : 0, res2 is 6, res3 is 6
res1 is : 6, res2 is 5, res3 is 11
res1 is : 11, res2 is 4, res3 is 15
res1 is : 15, res2 is 3, res3 is 18
18
有人可以解释如何计算这些值。我已经尝试输出所有创建的变量,但我仍然感到困惑。