3. What is the output of this Rust code snippet?
fn main() {
let candidates = vec![2, 3, 6, 7];
let target = 7;
let result = combination_sum(&candidates, target);
println!("{:?}", result);
}
fn combination_sum(candidates: &[i32], target: i32) -> Vec {
fn backtrack(start: usize, target: i32, path: &mut Vec<i32>, res: &mut Vec, candidates: &[i32]) {
if target == 0 {
res.push(path.clone());
return;
}
for i in start..candidates.len() {
if candidates[i] > target {
continue;
}
path.push(candidates[i]);
backtrack(i, target - candidates[i], path, res, candidates);
path.pop();
}
}
let mut res = vec![];
let mut path = vec![];
backtrack(0, target, &mut path, &mut res, candidates);
res
}