class Fix<T,R>{
<T,R> Function<T,R> recus(Function<Function<T, R>, Function<T, R>> f){
Objects.requireNonNull(f);
return (T x)->f.apply(this.recus(f)).apply(x);
}
}
public class LamdaDemo{
public static void main(String[] args){
Function<Integer, Integer> fun = new Fix<>()
.recus(f->x->x<=1?1:x*f.apply(x-1));
System.out.println(fun.apply(5));
}
//打印结果为 5*4*3*2*1 =120
<T,R> Function<T,R> recus(Function<Function<T, R>, Function<T, R>> f){
Objects.requireNonNull(f);
return (T x)->f.apply(this.recus(f)).apply(x);
}
}
public class LamdaDemo{
public static void main(String[] args){
Function<Integer, Integer> fun = new Fix<>()
.recus(f->x->x<=1?1:x*f.apply(x-1));
System.out.println(fun.apply(5));
}
//打印结果为 5*4*3*2*1 =120


yan








