两种方法: 1、递归 2、动态规划

use std::io;

pub fn calc(i: u32, j: u32, n: u32, m: u32) -> u32 {
    if i == n || j == m {
        return 1;
    }
    return calc(i + 1, j, n, m) + calc(i, j + 1, n, m);
}
fn main() {
    let mut s = String::new();
    io::stdin().read_line(&mut s).unwrap();
    let (mut n, mut m) = (0u32, 0u32);
    for i in s.trim().split(" ") {
        if n == 0 {
            n = i.parse::<u32>().unwrap_or(1);
        } else {
            m = i.parse::<u32>().unwrap_or(1);
        }
    }
    println!("{}", calc(0, 0, n, m));
}

wait my code