gpt4 book ai didi

swift - 欧拉计划第 2 题,斐波那契数的 Swift Sum 低于 400 万

转载 作者:行者123 更新时间:2023-11-28 11:31:31 28 4
gpt4 key购买 nike

我是编码的新手,正在尝试通过完成 Project Euler 问题来学习 Swift。我似乎有导致大量错误的不同版本的 Swift 代码。如果您对我的问题的格式有任何建议以供将来引用,请告诉我,谢谢。

下面是我看过的一些例子。

示例 1

    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)
}

示例 2

// F[n] = F[n-1] + F[n-2]
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
// Find the fibonacci number for n interations
func fibonacci(n: Int) {

var num1 = 0
var num2 = 1

for _ in 0 ..< n {

let num = num1 + num2
num1 = num2
num2 = num
}

print("result = \(num2)")
}
fibonacci(7)


// Using Recursion
func fibonacciRecursiveNum1(num1: Int, num2: Int, steps: Int) {

if steps > 0 {
let newNum = num1 + num2
fibonacciRecursiveNum1(num2, num2: newNum, steps: steps-1)
}
else {
print("result = \(num2)")
}
}
fibonacciRecursiveNum1(0, num2: 1, steps: 7)

示例 3

    return SequenceOf { _ -> GeneratorOf<Int> in
var (a, b) = (1, 0)
return GeneratorOf {
(b, a) = (a, b + a)
if b > max { return nil }
return b
}
}
}


let sum = reduce(fibonacciTo(4_000_000), 0) {a, n in (n % 2 == 0) ? a + n : a }

在我看过的人的代码示例中,我遇到了一些错误,我认为这些错误与 Swift 的不兼容版本有关。

最佳答案

首先,你的例子已经过时了。从 Swift 3 开始,第一个参数标签是必需的

fibonacci(n: 7)

fibonacciRecursiveNum1(num1: num2, num2: newNum, steps: steps-1)

...

fibonacciRecursiveNum1(num1 : 0, num2: 1, steps: 7)

其次,Int64 值中 Fibonacci 迭代的最大值为 91、92 及以上超出 64 位范围并导致崩溃。

关于swift - 欧拉计划第 2 题,斐波那契数的 Swift Sum 低于 400 万,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com