我正在尝试将这个以n符号方式计算x^x的th 导数的程序移植到 Rust。这似乎很容易:
use std::rc::Rc;
type Expr = Rc<Expr2>;
enum Expr2 {
Int(i32),
Var(String),
Add(Expr, Expr),
Mul(Expr, Expr),
Pow(Expr, Expr),
Ln(Expr),
}
use Expr2::*;
fn pown(a: i32, b: i32) -> i32 {
match b {
0 => 1,
1 => a,
n => {
let b = pown(a, b / 2);
let b2 = b * b;
if n % 2 == 0 {
b2
} else {
b2 * a
}
}
} …Run Code Online (Sandbox Code Playgroud) rust ×1