カテゴリ: Kotlin 更新日: 2026/01/05

Kotlinの再帰関数を使った処理の基本!階乗・フィボナッチ数列もやさしく解説

Kotlinの再帰関数を使った処理の基本(階乗・フィボナッチ数列)
Kotlinの再帰関数を使った処理の基本(階乗・フィボナッチ数列)

先生と生徒の会話形式で理解しよう

生徒

「Kotlinで『再帰関数』っていう言葉を聞いたんですけど、どういう意味ですか?」

先生

「再帰関数というのは、自分自身を呼び出す関数のことです。繰り返し処理をするときに使われるんですよ。」

生徒

「えっ、自分自身を呼び出すってどういうことですか?難しそうです…」

先生

「大丈夫ですよ!まずは『再帰』の意味から、Kotlinでの書き方、そして代表的な例を使って順番に説明していきましょう。」

1. 再帰関数(さいきかんすう)とは?

1. 再帰関数(さいきかんすう)とは?
1. 再帰関数(さいきかんすう)とは?

再帰関数とは、自分の中で自分自身を呼び出す関数のことです。

たとえば、「1から5まで足していく」ような繰り返しの処理を、ループ(for文やwhile文)を使わずに関数だけで実現する方法です。

考え方は「処理を分けて、少しずつ解決していく」ことです。計算が終わる条件が必ず必要になります。

2. 再帰関数で「階乗(かいじょう)」を求めよう

2. 再帰関数で「階乗(かいじょう)」を求めよう
2. 再帰関数で「階乗(かいじょう)」を求めよう

階乗とは、1×2×3×…×n のように、1からnまでの数字をすべて掛け算することです。5の階乗は「5×4×3×2×1=120」となります。

Kotlinで階乗を再帰関数で書くとこうなります。


fun factorial(n: Int): Int {
    return if (n <= 1) 1
    else n * factorial(n - 1)
}

factorialという関数の中で、自分自身を呼び出しています。そして、nが1以下のときは1を返すことで、繰り返しを止めています。

3. Kotlinの再帰関数のしくみ

3. Kotlinの再帰関数のしくみ
3. Kotlinの再帰関数のしくみ

再帰関数は、毎回新しい関数の処理が積み重なるように呼び出されます。

最初にfactorial(5)が呼ばれると、それがfactorial(4)を呼び…と続き、最後にfactorial(1)で止まります。そこから順に結果を掛け算していきます。

こうして、関数がどんどん「呼び出されて→戻る」を繰り返して、答えが計算されるのです。

4. 実行してみよう!

4. 実行してみよう!
4. 実行してみよう!

試しに、main関数から呼び出して動かしてみましょう。


fun main() {
    val result = factorial(5)
    println("5の階乗は $result です")
}

5の階乗は 120 です

5. フィボナッチ数列を再帰関数で書く

5. フィボナッチ数列を再帰関数で書く
5. フィボナッチ数列を再帰関数で書く

次は「フィボナッチ数列」です。これは「1、1、2、3、5、8、13、…」と続く数列で、直前の2つの数を足した値が次になる特徴があります。

フィボナッチ数列のn番目の値を求める関数は、次のように書けます。


fun fibonacci(n: Int): Int {
    return if (n <= 1) n
    else fibonacci(n - 1) + fibonacci(n - 2)
}

たとえばfibonacci(6)を計算すると、「8」が返ってきます。

6. フィボナッチ数列を出力してみよう

6. フィボナッチ数列を出力してみよう
6. フィボナッチ数列を出力してみよう

0〜10番目のフィボナッチ数列を出力するには、以下のように書きます。


fun main() {
    for (i in 0..10) {
        print("${fibonacci(i)} ")
    }
}

0 1 1 2 3 5 8 13 21 34 55 

7. 再帰関数で気をつけるポイント

7. 再帰関数で気をつけるポイント
7. 再帰関数で気をつけるポイント

再帰関数には終わりの条件(終了条件)が必要です。これがないと、自分を何度も呼び続けてプログラムが止まらなくなります。

if (n <= 1)のような条件で必ず止めるようにしましょう。

また、再帰は便利ですが、たくさん呼び出されると動作が重くなることもあるので注意が必要です。

8. なぜループではなく再帰で書くのか?

8. なぜループではなく再帰で書くのか?
8. なぜループではなく再帰で書くのか?

ループ(forやwhile)でも同じような処理は書けますが、再帰の方が考え方がシンプルになる場合があります。

特に、数学的な問題や木構造のようなデータを扱う場面では、再帰が自然で読みやすいことが多いです。

Kotlinでは、関数をうまく使ってわかりやすいコードを書くことが推奨されているので、再帰もそのひとつです。

9. 再帰関数は初心者でも使える便利なテクニック

9. 再帰関数は初心者でも使える便利なテクニック
9. 再帰関数は初心者でも使える便利なテクニック

最初は「自分自身を呼び出す」という考え方が難しく感じるかもしれませんが、ルールに従えば安全に使えます

Kotlinの再帰関数は、シンプルな記述で複雑な繰り返し処理が書けるので、初心者にもおすすめです。

まとめ

まとめ
まとめ

Kotlinの再帰関数は、自分自身を呼び出しながら処理を進めていくという独特のしくみを持った関数であり、繰り返し処理を丁寧に分解して考える力を養うためにもとても役立つ概念です。この記事では、階乗やフィボナッチ数列といった代表的な例を通して、再帰関数がどのように動き、どのような場面で便利になるのかを学びました。再帰の考え方は、計算を段階的に分解することでシンプルに捉えられるという特徴があり、数学的な処理やツリー構造の探索など、複雑な仕組みをわかりやすく表現できるのが大きな魅力です。また、再帰関数には必ず“終了条件”が必要であり、条件がなければ処理が延々と続いてしまう危険があるという点も重要です。終了条件によって適切なタイミングで処理を止めながら、計算結果を積み重ねていくことで最終的な答えにたどり着くという流れは、Kotlinの関数の考え方を深く理解するうえでも大きな助けとなるでしょう。 階乗の計算では「nが1以下なら1を返す」という明確な終了条件を設け、フィボナッチ数列の計算では「直前の2つの値を足す」という本質的な動きをそのまま表現できました。こうした自然な形で処理を記述できるのは、再帰関数ならではの書きやすさです。同じ処理をループで書くこともできますが、再帰で書くことで処理の意図や計算の構造が読み取りやすくなり、Kotlinらしい表現の美しさが際立ちます。再帰関数の基礎を理解しておくことは、今後のプログラミング学習において非常に大きな力となるはずです。繰り返し処理、数学的な計算、データ構造の理解など、多様な場面で応用できるため、今回学んだ内容をじっくり復習しながらコードを書く練習を重ねていくとよいでしょう。

再帰関数の理解を深めるサンプルコード

記事の内容をふまえて、階乗とフィボナッチ数列をまとめて動かしてみるサンプルコードを紹介します。再帰の基本構造を確認しながら読むと理解が深まります。


fun factorial(n: Int): Int {
    return if (n <= 1) 1 else n * factorial(n - 1)
}

fun fibonacci(n: Int): Int {
    return if (n <= 1) n else fibonacci(n - 1) + fibonacci(n - 2)
}

fun main() {
    println("6の階乗は ${factorial(6)} です")
    for (i in 0..10) {
        print("${fibonacci(i)} ")
    }
}

このサンプルでは、階乗とフィボナッチ数列の両方を再帰で実装し、計算の流れを自然に表現しています。特に、フィボナッチ数列は前の2つの値を足し合わせるという特徴をそのままコードにできるため、再帰の考え方に慣れるための良い練習になります。繰り返し処理をすっきりと書けることは、Kotlinでプログラムを組むうえで大きな強みとなり、実務でも役立つ場面が多くあります。再帰が難しいと感じるときは、まずは終了条件に注目し、計算をどのように分ければよいのかを紙に書きながら整理すると理解しやすくなります。

先生と生徒の振り返り会話

生徒

「再帰関数って、最初はとても難しく見えましたけど、階乗やフィボナッチの例で考えると少しずつ分かってきました!」

先生

「そうですね。再帰は“自分自身に少しずつ仕事を任せる”というイメージで考えると理解しやすくなりますよ。」

生徒

「終了条件がないと止まらなくなるという話も、すごく大事なんですね。フィボナッチも構造的に書けて面白かったです。」

先生

「その通りです。終了条件は再帰で最も重要なポイントのひとつですね。条件を正しく書けば、複雑な処理も綺麗に整理できます。」

生徒

「次は木構造とかも再帰で書いてみたいです!処理の流れを追う練習をもっとしてみます。」

先生

「とてもいい姿勢ですね。再帰は応用範囲が広いので、少しずつ慣れていけば確実に力になりますよ。」

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinの再帰関数とは何ですか?初心者でも理解できるように教えてください。

Kotlinの再帰関数とは、関数の中で自分自身を呼び出す関数のことです。for文やwhile文の代わりに使える仕組みで、階乗やフィボナッチ数列のように、同じ処理を小さく分けて繰り返す問題に向いています。
関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Swift
Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
New3
Kotlin
Kotlinの認証と認可を完全解説!初心者でもわかる安全なログイン管理とセキュリティ対策
New4
Go言語
Go言語の関数でエラーハンドリングする基本的な方法
人気記事
No.1
Java&Spring記事人気No1
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.2
Java&Spring記事人気No2
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説