fn ackermann(m: i32, n: i32) -> i32 {
if m == 0 {
return n + 1;
} else if m > 0 && n == 0 {
return ackermann(m - 1, 1);
} else if m > 0 && n > 0 {
return ackermann(m - 1, ackermann(m, n - 1));
}
}
編譯過程中有一個錯誤:
error: mismatched types [--explain E0308]
--> src/main.rs:3:5
|>
3 |> if m == 0 {
|> ^expected i32, found()
note: expected type `i32`
note: found type `()`
您可以使用'u32'和'else'作爲最後一個分支。 (可能'u8'代表'm'和'u64'代替其他代碼會更合適。) – starblue