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

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才再次被使用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容