Written by
Amy
on
on
제곱수 만들기
x^exponent
- 변수를 만들어서 초기값을 1로 주고 exponent - 1 번 계속 곱하는 방법
func square(value: Int, exponent: Int) -> Int {
var result: Int = 1
for _ in 0..<exponent {
result *= value
}
return result
}
재귀를 활용하기
- x^y = x * x^(y-1) 임을 활용하여, 재귀 함수 호출
func power(_ x: Int, _ y: Int) -> Int {
if y == 0 {
return 1
} else {
return x * power(x, y - 1)
}
}
다른 방법 (반으로 쪼개기)
func pow(_ x: Int, _ y: Int) -> Int {
if y == 0 {
return 1
} else if y == 1 {
return x
} else {
// compute x^(y/2)
let xy2 = pow(x, y / 2)
// if y is even
if y % 2 == 0 {
// x^y is x^(y/2) squared
return xy2 * xy2
} else {
// x^y is x^(y/2) squared times x
return xy2 * xy2 * x
}
}
}