我对生锈编程是新手。我想用递归实现合并排序。这是我的代码:
fn merge(a: &mut Vec<u32>, b: &mut Vec<u32>) -> Vec<u32> {
let mut temp: Vec<u32> = Vec::new();
println!("The digit is {}", a[0]);
while a.len() > 0 && b.len() > 0 {
if a[0] > b[0] {
temp.push(a[0]);
a.pop();
} else {
temp.push(b[0]);
b.pop();
}
}
while a.len() > 0 {
temp.push(a[0]);
a.pop();
}
while b.len() > 0 {
temp.push(b[0]);
b.pop();
}
temp
}
fn merge_sort(v: &mut Vec<u32>) -> Vec<u32> {
println!("The divided vector is: {:?}", v);
let n = v.len();
if n == 1 {
println!("The divided vector is: {:?}", v.to_vec());
let t: Vec<u32> = Vec::new();
t.push(v[0]);
t
}
if n == 0 {
panic!("Alas!! NULL");
}
merge(
&mut merge_sort(&mut v[0..n / 2].to_vec()),
&mut merge_sort(&mut v[n / 2 + 1..n].to_vec()),
)
.to_vec()
}
fn main() {
let mut v = vec![23, 78, 89, 64, 23, 12, 79, 45, 64];
println!("The vector is: {:?}", v);
println!("The length {}", v.len());
let v = merge_sort(&mut v);
println!("The sorted vector is: {:?}", v);
}
问题是,当我试图编译它时,我得到了以下错误:
error[E0308]: mismatched types
--> src/main.rs:36:9
|
32 | / if n == 1 {
33 | | println!("The divided vector is: {:?}", v.to_vec());
34 | | let t: Vec<u32> = Vec::new();
35 | | t.push(v[0]);
36 | | t
| | ^ expected `()`, found struct `std::vec::Vec`
37 | | }
| | -- help: consider using a semicolon here
| |_____|
| expected this to be `()`
|
= note: expected unit type `()`
found struct `std::vec::Vec<u32>`
你知道我为什么会犯这个奇怪的错误吗!看来,我错过了什么。
在Rust中,块类型是最终表达式的类型,如果没有,则为()
。此外,组合块需要与if{...}fe if{...}fe{...}
相同的类型。如果没有ore
,if表达式的返回类型必须是()
,因为这是表达式计算结果为false时返回的类型。
此外,结果不是代码中的最终表达式。您需要的是使用返回。还要注意,推送需要实例的可变引用(
if n == 1 {
println!("The divided vector is: {:?}", v.to_vec());
let mut t: Vec<u32> = Vec::new();
t.push(v[0]);
return t;
}
我需要这样的东西: 当然,我认为只有内置数字类型的向量才能传递给函数。 编译器告诉我,我需要为Vec提供FromIterator的trait trait
我对Android-Studio是新手,我正试图让一个“旧”应用程序重新运行。当我将Project与Gradle文件同步时,它会向我显示一条错误消息: 我还将google()和mavenCentral()添加到存储库中,但这并没有帮助。
问题内容: 错误: 出现的内容不起作用: 如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。 如果我尝试更改boven类中的“}”符号并将其放置在文本的末尾,那么我什至会收到更多错误消息。 问题: 我必须在代码中进行哪些更改才能使其正常工作? 注意: 我是Java的新手,我知道有更多类似这样的文章,但是由于
MAC OSX 我在“$HOME/documents/personal_documents/java”中有java源文件.java。 执行了以下命令:- CD$HOME/Documents/Personal_Documents/Java javac.java(“已成功执行”) Java A(“抛出错误”:错误:找不到或加载主类A,原因是:java.lang.ClassNotFoundExcepti
我重构了我的light webapp,现在使用compojure。当地一切正常。然而,当我部署到Heroku时,我的问题就出现了。我试图用来运行它,但遇到以下错误。由于这个问题,我的Procfile是。但还是没有运气。有什么想法吗?
MAC OSX 我在“$home/documents/personal_documents/java”中有java源文件。java。 null > /usr/libexec/java_home /users/rishabshinghal/library/java/javavirtualmachines/openjdk-14.0.1/contents/home 尝试显式设置JAVA_HOME,PAT