并不是递归调用的貌似递归代码

def simple(seed: Long): RNG = new RNG {
        def nextInt = {
            val seed2 = (seed * 0x5DEECE66DL + 0xBL) &
                    ((1L << 48) - 1)
            ((seed2 >>> 16).asInstanceOf[Int],
                    simple(seed2))
        }
    }

  • simple函数返回了一个RNG的子类对象,并定义了该子类对象的nextInt函数
  • 这并不是递归调用,因为只有在nextInt被调用的时候才会再次调用simple函数,该函数又定义了一个RNG的子类,并在其实现的nextInt函数中放入了simple
  • 并不是递归,因为只有在方法被调用时,simple才再次被使用

你可能感兴趣的:(并不是递归调用的貌似递归代码)