Lambda表达式可以用来定义递归函数吗?
是的,只要递归调用使用在lambda闭包环境中定义的变量名称。这意味着,递归定义仅可在变量赋值的情况下,事实上,考虑到赋值之前使用的规则为局部变量仅限实例或静态变量赋值。因此,在下面的例子中,factorial必须声明为实例或静态变量。
例如
原文链接: http://www.lambdafaq.org/can-lambda-expressions-be-used-to-define-recursive-functions/
是的,只要递归调用使用在lambda闭包环境中定义的变量名称。这意味着,递归定义仅可在变量赋值的情况下,事实上,考虑到赋值之前使用的规则为局部变量仅限实例或静态变量赋值。因此,在下面的例子中,factorial必须声明为实例或静态变量。
例如
UnaryOperator<Integer> factorial = i -> { return i == 0 ? 1 : i * factorial.apply( i - 1 ); };
原文链接: http://www.lambdafaq.org/can-lambda-expressions-be-used-to-define-recursive-functions/