微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用lambda函数的阶乘递归实现

如何解决使用lambda函数的阶乘递归实现

我尝试使用Lambda函数实现阶乘的代码代码中的错误指出,运算符“ ==”或“-”不能在lambda函数中应用。

@FunctionalInterface
public interface RecFunction {
    Integer recursiveFunction(Integer n);
}
        // Lambda Function
        Integer Fact = (n)-> {
            if (n == 0) return 1;
            else return n * factorial.recursiveFunction ( n - 1 );
        };

解决方法

lambda表达式的目标必须是功能接口,而不是Integer

解决该问题后,您可能希望Factfactorial成为同一变量。

如果factorial是局部变量,那是不可能的,但是实例变量或静态变量是可能的。

例如:

class Test 
{
    static RecFunction factorial = null;

    public static void main (String[] args)
    {
        factorial = n -> {
            if (n == 0) {
                return 1;
            } else {
                return n * factorial.recursiveFunction (n - 1);
            }
        };
        System.out.println (factorial.recursiveFunction(5));
    }
}

lambda表达式也可以重写为:

factorial = n -> n == 0 ? 1 : n * factorial.recursiveFunction (n - 1);

这将输出

120

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。