再帰を使った桁の合計

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

再帰は、関数が自身を呼び出すプログラミング技術であり、ベースケースが満たされ、関数が最終出力を返すまで関数を繰り返すことができます。この実験では、再帰を使って与えられた数の桁の合計を求める方法を学びます。

注: コーディングを練習し、gccを使ってコンパイルして実行する方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123340{{"再帰を使った桁の合計"}} c/function_declaration -.-> lab-123340{{"再帰を使った桁の合計"}} c/function_parameters -.-> lab-123340{{"再帰を使った桁の合計"}} c/recursion -.-> lab-123340{{"再帰を使った桁の合計"}} c/user_input -.-> lab-123340{{"再帰を使った桁の合計"}} c/output -.-> lab-123340{{"再帰を使った桁の合計"}} end

ユーザー入力の取得

最初のステップは、ユーザー入力を取得することです。これは、その桁の合計を求めたい数になります。これを行うには、scanf 関数を使って標準入力 (stdin) ストリームからユーザー入力を読み取ります。

#include<stdio.h>

int main()
{
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);

    /* Add Code */

    return 0;
}

再帰関数の定義

次に、与えられた数の桁の合計を求める再帰関数を書きます。この関数は整数をパラメータとして受け取り、整数を桁の合計として返します。この関数は以下の手順を実行します。

  1. 数が10未満の場合、関数は桁の合計としてその数自体を返します。
  2. 数が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);
    }
}

まとめ

この実験では、再帰を使って与えられた数の桁の合計を求める方法を学びました。まず、ユーザー入力を取得し、桁の合計を計算する再帰関数を定義しました。その後、関数を呼び出して結果をユーザーに表示しました。