Lambda表达式能用来定义递归函数吗?
是的,递归可以调用在lambda外部环境定义的名称。这意味这递归仅能够定义在变量赋值的上下文中,事实上,因为对局部变量有赋值优先于使用的规则,递归定义仅仅能够能够在实例变量或静态变量的赋值中。所以,下面的例子中,**factorial**必须被声明为实例变量或静态变量。
UnaryOperator<Integer> factorial = i -> { return i == 0 ? 1 ; i* factorial.apply(i-1);};