mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-18 06:20:58 +00:00
28c1e74c1d
Replace the exercise pages' Python-only snippets with source-backed implementations for the 13 visible programming languages, and localize reader-facing comments by site language. Zig remains out of scope. Approval bypass: repository protection requires one approval but does not enforce it for administrators. All 68 completed checks succeeded; four non-required Java jobs remained queued on the existing ubuntu-20.04 workflow, with no failed checks.
62 lines
1.2 KiB
Rust
62 lines
1.2 KiB
Rust
/*
|
|
* File: complexity_exercises.rs
|
|
* Created Time: 2026-08-18
|
|
* Author: Hello Algo Team
|
|
*/
|
|
|
|
/* Итеративное суммирование */
|
|
fn sum_iter(n: i32) -> i32 {
|
|
let mut res = 0;
|
|
for i in 1..=n {
|
|
res += i;
|
|
}
|
|
res
|
|
}
|
|
|
|
/* Рекурсивное суммирование */
|
|
fn sum_recur(n: i32) -> i32 {
|
|
if n == 1 {
|
|
return 1;
|
|
}
|
|
n + sum_recur(n - 1)
|
|
}
|
|
|
|
/* Цикл линейной сложности */
|
|
fn linear_loop(n: i32) -> i32 {
|
|
let mut res = 0;
|
|
for i in 0..n {
|
|
res += i;
|
|
}
|
|
res
|
|
}
|
|
|
|
/* Цикл квадратичной сложности */
|
|
fn quadratic_loop(n: i32) -> i32 {
|
|
let mut res = 0;
|
|
for i in 0..n {
|
|
for j in i..n {
|
|
res += j;
|
|
}
|
|
}
|
|
res
|
|
}
|
|
|
|
/* Цикл логарифмической сложности */
|
|
fn logarithmic_loop(mut n: i32) -> i32 {
|
|
while n > 1 {
|
|
n /= 2;
|
|
}
|
|
n
|
|
}
|
|
|
|
fn main() {
|
|
assert_eq!(sum_iter(1), 1);
|
|
assert_eq!(sum_recur(1), 1);
|
|
assert_eq!(sum_iter(4), 10);
|
|
assert_eq!(sum_recur(4), 10);
|
|
assert_eq!(linear_loop(4), 6);
|
|
assert_eq!(quadratic_loop(4), 20);
|
|
assert_eq!(logarithmic_loop(4), 1);
|
|
assert_eq!(logarithmic_loop(5), 1);
|
|
}
|