Swift 3中的Fibonacci数字生成器
发布时间:2020-12-14 05:43:12 所属栏目:百科 来源:网络整理
导读:下面的Q A介绍了一些在Swift中生成Fibonacci数的方法,但它已经过时了(Swift 1.2?): Sum of Fibonacci term using Functional Swift 问题:我们如何使用现代Swift(Swift = 3)整齐地生成斐波纳契数?优选地,避免显式递归的方法. Swift 3.0的另一种选择是使用
下面的Q& A介绍了一些在Swift中生成Fibonacci数的方法,但它已经过时了(Swift 1.2?):
> Sum of Fibonacci term using Functional Swift 问题:我们如何使用现代Swift(Swift> = 3)整齐地生成斐波纳契数?优选地,避免显式递归的方法.
Swift 3.0的另一种选择是使用辅助函数
public func sequence<T>(first: T,while condition: @escaping (T)-> Bool,next: @escaping (T) -> T) -> UnfoldSequence<T,T> { let nextState = { (state: inout T) -> T? in // Return `nil` if condition is no longer satisfied: guard condition(state) else { return nil } // Update current value _after_ returning from this call: defer { state = next(state) } // Return current value: return state } return sequence(state: first,next: nextState) } 从Express for loops in swift with dynamic range: for f in sequence(first: (0,1),while: { $1 <= 50 },next: { ($1,$0 + $1)}) { print(f.1) } // 1 1 2 3 5 8 13 21 34 请注意,为了在结果序列中包含零,它 for f in sequence(first: (1,0),$0 + $1)}) { print(f.1) } // 0 1 1 2 3 5 8 13 21 34 这使得“人为”检查 if pair.1 == 0 { pair.1 = 1; return 0 } 多余的.根本原因是Fibonacci数字可以 ... -8,5,-3,2,-1,1,3,8,... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |