再帰を使った回文判定

CCBeginner
今すぐ練習

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

はじめに

この実験では、C プログラミング言語を使って再帰を使って与えられた数が回文かどうかをチェックする方法を学びます。回文とは、逆にしたときに元のシーケンスと同じように見えるシーケンスのことです。例:abba、level、999 など。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/ControlFlowGroup -.-> c/if_else("If...Else") 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/if_else -.-> lab-123297{{"再帰を使った回文判定"}} c/function_declaration -.-> lab-123297{{"再帰を使った回文判定"}} c/function_parameters -.-> lab-123297{{"再帰を使った回文判定"}} c/recursion -.-> lab-123297{{"再帰を使った回文判定"}} c/user_input -.-> lab-123297{{"再帰を使った回文判定"}} c/output -.-> lab-123297{{"再帰を使った回文判定"}} end

メイン関数を作成する

main.c ファイルに、次のコード ブロックを持つ main 関数を作成します。この関数はユーザーから整数を受け取り、その後、その数が回文かどうかをチェックするために isPal 関数を呼び出します。

#include<stdio.h>
int isPal(int );
int n;
int main()
{
  printf("\nEnter a number to check for Palindrome: ");
  scanf("%d", &n);
  isPal(n);
  return 0;
}

再帰を使って isPal 関数を作成する

isPal 関数は整数を引数として受け取り、それが回文かどうかを返します。この関数は再帰を使って回文条件をチェックします。回文条件が満たされる場合、1 を返して入力された数が回文であることを示します。それ以外の場合は 0 を返します。

int isPal(int aj)
{
    static int sum = 0;
    if(aj!= 0)
    {
        sum = sum *10 + aj%10;
        isPal(aj/10);
    }
    else if(sum == n)
        printf("%d is palindrome.\n",n);
    else
        printf("%d is not palindrome.\n",n);
    return 0;
}

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

次のコマンドを使用してコードをコンパイルします。gcc -o main main.c

次のコマンドを使用してコードを実行します。./main

回文かどうかを確認する必要のある数を入力します。

プログラムの出力

プログラムの出力は、提供された入力数が回文かどうかを示します。

まとめ

この実験では、C プログラムを使って再帰を用いて与えられた数が回文かどうかをチェックする方法を学びました。回文はコンピュータサイエンスにおける重要な概念であり、文字列照合アルゴリズムを含む様々なアプリケーションで使用されます。この実験が再帰と C プログラミング言語の概念の理解に役立ったことを願っています。