問題一覧に戻る
初級関数
問題28: 再帰関数

再帰関数は自分自身を呼び出す関数です。複雑な問題を小さな部分問題に分解して解く際に有効です。基底条件(終了条件)を必ず設定し、無限再帰を避ける必要があります。Rustではスタックサイズに制限があるため、深い再帰はスタックオーバーフローを引き起こす可能性があります。

// 階乗計算
fn factorial(n: u32) -> u32 {
if n <= 1 {
1
} else {
n * (n - 1)
}
}

// フィボナッチ数列
fn fibonacci(n: u32) -> u32 {
if n <= 1 {
n
} else {
(n - 1) + (n - 2)
}
}

fn main() {
println!("5! = {}", factorial(5));
println!("fib(7) = {}", fibonacci(7));
}