iOS Developer

swift实例:用闭包实现丘奇数

2017-03-15  本文已影响58人  Theendisthebegi

1.什么是丘奇数?
Church numerals是一种计数方法。 简单来说:

0=x,1=f(x),2=f(f(x))...

可以看到,丘奇数其实就是用函数来表示数字,而且函数有限制,函数值必须能够当函数变量来用。如果用代码去实现丘奇数,也就是有三个变量
丘奇数:

0=x,1=f(x),2=f(f(x))...

也就是有三个变量,函数变量x,次数num(即0,1,2),f(即该函数) */

func churchNumeral(f:((Float) -> Float),x:Float,num:Int) -> Float

2.那么怎么去实现它呢?

var tempX:Float = x
if num > 0 { 
    for _ in 1...num {      
      tempX = f(tempX)  
   }    
}                                         
return tempX;

3.那么接下来用闭包去调用它

print(churchNumeral(f: {$0*2}, x: 1.5, num: 10))

意思就是f自定义为2*x,x=1.5的情况下,10的丘奇数就是

1536.0

再比如,将f定义为x的平方,x=2,则4的丘奇数就是

print(churchNumeral(f: {$0*$0}, x: 2, num: 4))

结果是

65536.0
上一篇 下一篇

猜你喜欢

热点阅读