はじめに
再帰は、関数が自身を呼び出すプログラミング技術であり、ベースケースが満たされ、関数が最終出力を返すまで関数を繰り返すことができます。この実験では、再帰を使って与えられた数の桁の合計を求める方法を学びます。
注:コーディングを練習し、gcc を使ってコンパイルして実行する方法を学ぶには、自分で
~/project/main.cファイルを作成する必要があります。
cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main
ユーザー入力の取得
最初のステップは、ユーザー入力を取得することです。これは、その桁の合計を求めたい数になります。これを行うには、scanf 関数を使って標準入力 (stdin) ストリームからユーザー入力を読み取ります。
#include<stdio.h>
int main()
{
int num;
printf("Enter a number: ");
scanf("%d", &num);
/* Add Code */
return 0;
}
再帰関数の定義
次に、与えられた数の桁の合計を求める再帰関数を書きます。この関数は整数をパラメータとして受け取り、整数を桁の合計として返します。この関数は以下の手順を実行します。
- 数が 10 未満の場合、関数は桁の合計としてその数自体を返します。
- 数が 10 以上の場合、関数は最後の桁の合計を計算し、残りの桁を引数として自身を呼び出します。
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
再帰関数の呼び出し
次に、前のステップで定義した再帰関数を、ステップ 1 で取得したユーザー入力を使って呼び出します。この関数は、整数としてその数の桁の合計を返します。
#include<stdio.h>
int sumOfDigits(int num);
int main()
{
int num, sum;
printf("Enter a number: ");
scanf("%d", &num);
sum = sumOfDigits(num);
/* Add Code */
return 0;
}
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
結果の表示
最後のステップは、ステップ 1 で得られた数の桁の合計を表示することです。結果を標準出力 (stdout) ストリームに表示するために、printf 関数を使います。
#include<stdio.h>
int sumOfDigits(int num);
int main()
{
int num, sum;
printf("Enter a number: ");
scanf("%d", &num);
sum = sumOfDigits(num);
printf("Sum of digits of %d is: %d", num, sum);
return 0;
}
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
まとめ
この実験では、再帰を使って与えられた数の桁の合計を求める方法を学びました。まず、ユーザー入力を取得し、桁の合計を計算する再帰関数を定義しました。その後、関数を呼び出して結果をユーザーに表示しました。



