Mat*_*ung 4 pseudocode ios swift
我一直在研究减少Swift中的分数的函数,并且遇到了欧几里德算法以找到最大公因子(http://en.wikipedia.org/wiki/Euclidean_algorithm)
我把伪代码转换成了swift,但是我很困惑,如果它返回a了我认为应该是分数的分子,这将给我一个最大的共同因素.任何有关这方面的帮助将不胜感激.谢谢!
伪代码:
function gcd(a, b)
while b ? 0
t := b
b := a mod b
a := t
return a
Run Code Online (Sandbox Code Playgroud)
迅速:
var a = 2
var b = 4
func gcd(a: Int, b: Int) -> Int {
var t = 0
while b != 0 {
t = b
let b = a % b
let a = t
}
return a
}
println("\(a)/\(b)")
Run Code Online (Sandbox Code Playgroud)
控制台输出: 2/4
当你这样做
let b = a % b
Run Code Online (Sandbox Code Playgroud)
您正在创建另一个只读变量b,它与b外部作用域中的变量无关.你需要删除let循环中的两个s,并通过声明参数来修改参数var,如下所示:
func gcd(var a: Int, var b: Int) -> Int {
var t = 0
while b != 0 {
t = b
b = a % b
a = t
}
return a
}
Run Code Online (Sandbox Code Playgroud)
你可以这样调用你的函数:
let a = 111
let b = 259
println("a=\(a), b=\(b), gcd=\(gcd(a,b))")
Run Code Online (Sandbox Code Playgroud)
这打印 a=111, b=259, gcd=37
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |