C 言語における再帰的べき乗計算

CCBeginner
今すぐ練習

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

はじめに

この実験では、C 言語の再帰を使って、与えられた数値を n 乗する結果を計算する方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/operators("Operators") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/FunctionsGroup -.-> c/recursion("Recursion") c/FileHandlingGroup -.-> c/create_files("Create Files") c/FileHandlingGroup -.-> c/read_files("Read Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/operators -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/function_declaration -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/function_parameters -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/math_functions -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/recursion -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/create_files -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/read_files -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/user_input -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} c/output -.-> lab-123307{{"C 言語における再帰的べき乗計算"}} end

C ファイルを作成する

~/project/ ディレクトリに main.c という名前の新しいファイルを作成します。ここに C コードを記述します。

関数プロトタイプを宣言する

power() 関数は 2 つの整数を入力として受け取り、べき乗演算を行った後の値を返します。

int power(int base, int exponent);

power() 関数を定義する

power() 関数は、再帰的に自身を呼び出すことでべき乗演算を行います。指数が 0 の場合、1 を返します。それ以外の場合、基数と指数から 1 を引いた値を引数に power() 関数を呼び出した結果に基数を掛けた値を返します。

int power(int base, int exponent)
{
    if(exponent == 0) // ベースケース
        return 1;
    else
        return base * power(base, exponent - 1); // 再帰ケース
}

ユーザー入力を取得して power() 関数を呼び出す

scanf() 関数を使用してユーザーから基数と指数を取得し、それらを引数として power() 関数に渡します。最後に、printf() 関数を使用して結果を表示します。

int main()
{
    int base, exponent, result;

    printf("Enter the base: ");
    scanf("%d", &base);

    printf("Enter the exponent: ");
    scanf("%d", &exponent);

    result = power(base, exponent);

    printf("%d^%d = %d", base, exponent, result);

    return 0;
}

コードをコンパイルして実行する

変更を保存し、以下のように gcc コンパイラを使用してプログラムをコンパイルします。

gcc main.c -o main

次に、ターミナルに以下のコマンドを入力してプログラムを実行します。

./main

出力

出力結果には、ユーザーが入力した基数を指数でべき乗した結果が表示されます。

まとめ

この実験では、C 言語のプログラミングにおいて再帰を使用して数値の n 乗を計算する方法を学びました。指数が 0 になるベースケースに達するまで自身を呼び出す再帰関数を使用することで、これを実現しました。指数が 0 の場合、関数は 1 を返します。再帰関数から得られた値を変数に格納し、printf() 関数を使用してユーザーに表示しました。

power() 関数は、C 言語のプログラミングで任意の数値を指定されたべき乗にするために使用できます。