difference-of-squares v2
This commit is contained in:
@@ -1,14 +1,25 @@
|
|||||||
pub fn square_of_sum(n: Int) -> Int {
|
pub fn square_of_sum(n: Int) -> Int {
|
||||||
let sum = sum_to(n)
|
// (1 + 2 + ... n)^2
|
||||||
sum * sum
|
square_of_sum_loop(n, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sum_to(n: Int) -> Int {
|
fn square_of_sum_loop(n: Int, acc: Int) -> Int {
|
||||||
n * { n + 1 } / 2
|
case n {
|
||||||
|
0 -> acc * acc
|
||||||
|
_ -> square_of_sum_loop(n - 1, acc + n)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sum_of_squares(n: Int) -> Int {
|
pub fn sum_of_squares(n: Int) -> Int {
|
||||||
n * { n + 1 } * { 2 * n + 1 } / 6
|
// TODO (1^2 + 2^2 ... + n^2)
|
||||||
|
sum_of_squares_loop(n, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn sum_of_squares_loop(n: Int, acc: Int) -> Int {
|
||||||
|
case n {
|
||||||
|
0 -> acc
|
||||||
|
_ -> sum_of_squares_loop(n - 1, acc + { n * n })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn difference(n: Int) -> Int {
|
pub fn difference(n: Int) -> Int {
|
||||||
|
|||||||
Reference in New Issue
Block a user