Recursion rust能否返回递归构建的解决方案?

Recursion rust能否返回递归构建的解决方案?,recursion,rust,dynamic-programming,Recursion,Rust,Dynamic Programming,在动态规划问题中,解决方案是从较小的部分建立起来并返回给调用方的。一个超级简化的版本是基于计数递归地构建一个列表。锈蚀寿命似乎使这更复杂。是否可以使用rust完全在一个函数或一组函数内构建解决方案,然后返回它,或者您是否始终需要传入一个可变的结果变量,以便保存解决方案的变量在将使用它的作用域期间具有保证存在的生存期 //结果在内部创建并传递出去 函数列表\u构建\u递归(计数){ 如果(计数==0){return[];} 如果(计数>0){ 让结果=列表\构建\递归(计数-1); 结果:推(计

在动态规划问题中,解决方案是从较小的部分建立起来并返回给调用方的。一个超级简化的版本是基于计数递归地构建一个列表。锈蚀寿命似乎使这更复杂。是否可以使用rust完全在一个函数或一组函数内构建解决方案,然后返回它,或者您是否始终需要传入一个可变的结果变量,以便保存解决方案的变量在将使用它的作用域期间具有保证存在的生存期

//结果在内部创建并传递出去
函数列表\u构建\u递归(计数){
如果(计数==0){return[];}
如果(计数>0){
让结果=列表\构建\递归(计数-1);
结果:推(计数);
返回结果;
}
}
log(list_build_recursive(5))
fn列表\u构建\u递归(计数:i32)->Vec{
如果计数=0{
vec![]
}否则{
让mut result=list\u build\u recursive(计数-1);
结果:推(计数);
结果
}
}
fn main(){
println!(“list是{:?}”,list_build_recursive(5));
}

正如falsetru的回答所示,直截了当的等价物工作得很好,你有什么特别的问题吗?我试图用一个memo对象来记忆可能的方法,该对象由一个当前的sum散列键组成,该散列键指向产生该和的值列表。我无法返回本地存储的结果。然后我读到rust不能返回对临时值的引用,所以我试图传入对可变hashmap的引用,这在从基本情况返回时导致编译器错误。falsetru为我指明了正确的方向。
fn list_build_recursive(count: i32) -> Vec<i32> {
    if count == 0 {
        vec![]
    } else {
        let mut result = list_build_recursive(count - 1);
        result.push(count);
        result
    }
}

fn main() {
    println!("list is {:?}", list_build_recursive(5));
}