一週間で身につくC言語の基本

おさえておきたいプログラミングの基本

【6日目】 関数の作り方

6-1.再帰呼び出し

(1) 再帰呼び出しとは

C言語の関数のテクニックの一つとして、再帰呼び出しと呼ばれるものがあります。これは、ある関数が、自身の処理の中で、自分自身を呼び出すというものです。

それでは、実際に再帰呼び出しのサンプルを見てみましょう。まずは、以下のサンプルを実行してみてください。

list-rec6-1:main.c
#include <stdio.h>

void recursive(int);

int main(int argc, char** argv) {
    recursive(1);
    return 0;
}

void recursive(int a){
	printf("a=%d¥n", a);
	if (a < 5){	
		//	再帰呼び出し
		recursive(a + 1);
	}
}
実行結果
a = 1 a = 2 a = 3 a = 4 a = 5

recursive()関数は、引数として整数型変数をとり、まずその値を表示します。

そのあと、もしその値が5未満であれば、再び再帰処理によって、その値に1を足したものを引数として自分自身を呼び出します。

その結果、引数の値は1,2,3…と増えていき、5になった時点で終了します。

(2) スタックオーバーフロー

再帰呼び出しを行う際に注意しなくてはならないのが、スタックオーバーフローと呼ばれるものです。

C言語ではローカル変数は、「スタック領域」と呼ばれる部分に確保されます。スタック領域の大きさも限度があるので、再帰関数の呼び出しごとに、ローカル変数を確保することを繰り返すと、スタック領域が溢れる可能性があります。そのような現象がスタックオーバーフローと呼ばれるものです。

再帰呼び出しを行う際にはその点に気をつけながら行う必要があります。


6日目のメインページに戻る

練習問題 : 問題6.


一週間で学べるコースの一覧
Udemy
...
2024/10/01

Udemyでも学びましょう!

一週間でわかるC言語・C++言語がオンライン講座になりました!動画音声によってさらにわかりやすくなりました!! 1講座で2つの言語を学ぶことができる上に、練習問題の回答もダウンロードできます。

Read →
Impress一週間シリーズ
1週間でC言語の基礎が学べる本
2024/10/01

書籍化された一週間シリーズ

本講座が「1週間でC言語の基礎が学べる本」として書籍化されました!サイトの内容プラスアルファでより学習しやすくなっています!Impressより発売中です!!

Read →
Impress一週間シリーズ
...
2024/10/01

書籍化された一週間シリーズ

一週間シリーズは書籍化されています。こちらもどうぞ!

Read →
プログラマーなら欲しいグッズ
プログラミンググッズ

プログラミンググッズ

快適なプログラミング環境を構築したい人々にぜひとも揃えてほしいグッズです。

Read →
制作・管理
シフトシステム株式会社

シフトシステム株式会社

このサイトはシフトシステム株式会社によって制作・管理がなされています。

Read →