Swiftの再帰関数の使い方をやさしく解説!初心者でも理解できる再帰の基本と実践例
生徒
「Swiftで、自分自身を呼び出す関数があるって聞いたんですが、本当にそんなことできるんですか?」
先生
「はい、それは『再帰関数(さいきかんすう)』と呼ばれるものです。Swiftでは、自分自身を呼び出すことで繰り返し処理を行うことができます。」
生徒
「なるほど...でも、それって無限ループになりませんか?止まらないようにできるんですか?」
先生
「そこが再帰関数の大事なポイントです。終了条件(しゅうりょうじょうけん)を決めておけば、ちゃんと止まるんですよ。それでは、詳しく見ていきましょう!」
1. 再帰関数とは?
Swiftの再帰関数(さいきかんすう)とは、自分自身を呼び出す関数のことです。プログラムの中で、同じ関数がくり返し呼ばれることで、処理を繰り返します。
例えば、「1から5までの数字を順番に表示したい」ときに、for文などを使わずに、再帰関数で書くことができます。
ただし、再帰関数には必ず終了条件をつける必要があります。これがないと、永遠に関数が自分自身を呼び出し続けてしまい、エラーになります。
2. 再帰関数の基本構造
Swiftでの再帰関数の基本的な形は、以下のようになります。
func 関数名(引数) {
if 終了条件 {
return
}
// 処理内容
関数名(次の引数)
}
このように、まず終了条件で止める処理を書き、それ以外の場合に再び関数自身を呼び出します。
3. 実際の例:1から5までを表示する
では、実際に「1から5までの数字を表示する再帰関数」を作ってみましょう。
func printNumbers(_ n: Int) {
if n > 5 {
return
}
print(n)
printNumbers(n + 1)
}
printNumbers(1)
このコードを実行すると、次のような結果になります。
1
2
3
4
5
ポイントは、n > 5の部分で処理を止めるようにしているところです。これが「終了条件」になります。
4. 応用:階乗(かいじょう)を計算する
再帰関数の有名な例として、「階乗(かいじょう)」の計算があります。
階乗とは、「5!(ファイブ・ファクトリアル)」のように表現されて、5 × 4 × 3 × 2 × 1のように数字を掛け合わせた結果のことです。
func factorial(_ n: Int) -> Int {
if n == 1 {
return 1
}
return n * factorial(n - 1)
}
let result = factorial(5)
print(result)
実行すると、次のような結果になります。
120
この関数では、n == 1が終了条件です。1になったら再帰を終えて、それまでの計算結果を返していきます。
5. 再帰関数のメリットと注意点
再帰関数には、以下のようなメリットと注意点があります。
- コードがシンプルで読みやすい(とくに、入れ子の構造や木構造などに向いています)
- 処理の流れが理解しやすい(同じ関数の中で完結するため)
- ただし、繰り返し回数が多いとエラーになる可能性がある(スタックオーバーフロー)
再帰関数を使うときは、終了条件をしっかり設けて、無限ループにならないように注意しましょう。
6. なぜ再帰関数が必要なのか?
一見すると、for文やwhile文で同じことができそうですが、再帰関数が活躍する場面もあります。
例えば、ツリー構造(フォルダの中にさらにフォルダがあるような構造)をたどる場合、再帰がとても便利です。
複雑な構造を処理する際、コードがすっきりして、エラーが起きにくくなります。
7. 再帰関数は初心者でも使える?
はい、再帰関数は初心者でも使えるようになります。最初は少し難しく感じるかもしれませんが、「関数が自分自身を呼び出す」という仕組みと、「終わる条件を作る」というルールを守れば、だれでも使いこなせます。
最初は数字を数えたり、階乗を計算したりといったシンプルな例から練習するのがおすすめです。
まとめ
Swiftの再帰関数は、複雑な処理をシンプルな形で表現できる強力な仕組みです。これまでの記事全体を振り返ると、再帰という考え方は最初こそ難しく感じられるものの、考え方の基本はとてもシンプルで、「関数が自分自身を呼び出す」という一つのルールに基づいて動いているだけだとわかります。再帰処理は、繰り返しの動きを自然にコードとして表現したいときに役立ち、特に階層構造のデータ、入れ子の配置、ツリー構造、フォルダ構造の探索などで非常に読みやすいコードを書く手助けをしてくれます。for文やwhile文のような反復処理を使うよりも直感的に記述できる場合が多く、初心者から上級者まで幅広く使われる重要なテクニックといえます。
再帰関数の仕組みを理解するうえで最も大切なのが、必ず終了条件を入れるという点です。終了条件がなければ永遠に自分自身を呼び出し続けてしまうため、無限ループやスタックオーバーフローを招きます。そのため、処理がどこで終わるかを明確に書くことが再帰関数の基本であり、安全にプログラムを動かすための必須ルールでもあります。また、終了条件を分かりやすく書くことで、コード全体の流れがすっきりし、読み手にも理解しやすい構造になります。
さらに、再帰関数はその仕組み上「処理を分割しながら進む」ため、複雑な計算や入れ子構造の解析に向いています。階乗計算(ファクトリアル)のように、ひとつの大きな問題が同じ形の小さな問題に分解できるタイプの処理は、再帰関数ととても相性が良いです。小さな問題を積み重ねて解決し、その結果を戻していくという流れは、Swiftの関数構造とも相性がよく、初心者でも慣れてくると自然に書けるようになります。
また、再帰関数を使うことで、「問題を小さく分けて解く」という考え方が身につきます。これはプログラミングだけにとどまらず、コード全体の構造設計やバグの発見、効率的な処理への理解にもつながる重要な考え方です。小さな機能を積み重ねて大きな処理を構築するという構造は、開発のあらゆる場面で役立ちます。このように、再帰関数は単なるテクニックではなく、プログラミング全体の考え方に応用できる基礎力を身につける助けにもなります。
以下では記事の内容を整理し、再帰の理解を深めるためのサンプルコードを改めて掲載しながら、復習に役立つ形にまとめていきます。
再帰関数の理解を深めるサンプルプログラム
// 数を順番に表示する再帰の例
func showNumbers(_ value: Int) {
if value > 5 {
return
}
print("現在の数は \(value) です")
showNumbers(value + 1)
}
showNumbers(1)
// 階乗を計算する再帰関数の例
func calcFactorial(_ number: Int) -> Int {
if number == 1 {
return 1
}
return number * calcFactorial(number - 1)
}
let factorialResult = calcFactorial(6)
print("6の階乗は \(factorialResult) です")
上のコードでは、再帰関数がどのように処理を進めているかを自然に理解できるように工夫されています。showNumbersでは、値が5を超えたら止まるという明確な終了条件を設け、階乗の計算では1になったときに値を返すことで再帰が収束する仕組みになっています。Swiftではこのように再帰を使った処理を書くことで、短く整ったコードを構築することができ、関数の呼び出しの動きを追う力も身につきます。とくにツリー探索や階層データの走査などでは、再帰の考え方が非常に活躍します。再帰の動きは一見複雑に見えますが、処理を分割して積み重ねていく流れを理解できると、むしろ処理が整理されて分かりやすくなるのが特徴です。
そして、再帰関数は初心者でもしっかり練習すれば身につけられるスキルです。数字を増やしていく簡単な例、階乗のように積み上げていく例、そしてフォルダ構造やデータ階層の探索など、段階に応じてさまざまな応用ができます。重要なのは、「どこで止めるか」「何を繰り返し呼び出すか」という二つのポイントを押さえることです。この二つが理解できていれば、再帰に対する苦手意識は自然と消えていきます。
生徒:「再帰関数って難しいイメージがあったけど、仕組みが分かれば意外とシンプルなんですね!」
先生:「そうなんです。大切なのは、終了条件をしっかり決めてあげること。これさえ守れば、再帰はとても強力で使いやすい方法になります。」
生徒:「階乗の計算や数字を増やしていく例は特に分かりやすかったです。自分のアプリでも使えそうです。」
先生:「ぜひ使ってみてください。初めは小さな例でも、慣れてくるとツリー構造や複雑な処理にも自然に応用できますよ。」
生徒:「再帰の“問題を小さく分ける”という考え方が、プログラム全体を理解する練習にもなるんですね。」
先生:「その気づきはとても良いですよ。再帰はアルゴリズムの基礎にもつながるので、しっかり身につければ今後の学習にとても役立ちます。」
生徒:「もっといろいろな再帰の例を試してみます!」
先生:「応援していますよ。楽しみながら学んでいきましょう。」
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門