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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,868评论 0 6
  • 民国时候,才子佳人的故事我们都听说过不少。 徐志摩、陆小曼、林徽因、梁思成,现代人看来,他们的生活即是浪漫。 可除...
    小野猫_5a2d阅读 254评论 1 2
  • 文/一位喵先生 有人说,爱情里最好的状态刚开始的暧昧时光,当你收到他的信息时,嘴角不自觉地上扬,给他回复的每字每句...
    一位喵先生阅读 1,075评论 0 5
  • 1 Z小姐是我大学一铁姐们,她有一男友也是我们班的。我看着他们大一交往,大四分手,最后女嫁人,男娶妻,从此相忘于天...
    行走的羊阅读 178评论 0 1