再帰処理で文字列内の特定文字の出現回数を求めるPythonプログラム
再帰(リカージョン)を利用して、指定した文字が文字列の中に何回出現するかを調べたい場合があります。このようなときは、独自のメソッドを定義し、「if」条件と組み合わせることでシンプルに実装できます。
再帰とは、大きな問題をより小さな単位に分割してそれぞれの結果を計算し、それらを組み合わせて最終的な答えを導き出す手法です。文字列の先頭から1文字ずつ確認していくことで、自然にこの考え方を実現できます。
サンプルコード
以下に実際のコード例を示します。
def check_frequency(my_str,my_ch):
if not my_str:
return 0
elif my_str[0]==my_ch:
return 1+check_frequency(my_str[1:],my_ch)
else:
return check_frequency(my_str[1:],my_ch)
my_string = input("Enter the string :")
my_char = input("Enter the character that needs to be checked :")
print("The frequency of " + str(my_char) + " is :")
print(check_frequency(my_string,my_char))実行結果
Enter the string :jaanea Enter the character that needs to be checked :a The frequency of a is : 3
コードの解説
- 「check_frequency」という名前のメソッドを定義し、文字列と文字を引数として受け取ります。
- 文字列が空の場合は0を返し、これが再帰の終了条件(ベースケース)となります。
- 文字列の先頭の文字が、引数で渡された文字と一致するかどうかを判定します。
- 一致した場合は1を加算し、残りの文字列に対して自分自身を再帰的に呼び出します。
- 一致しない場合は、そのまま残りの文字列に対して再帰呼び出しを行います。
- 文字列とチェック対象の文字は、input() 関数によってユーザー入力として受け取ります。
- 入力された値を引数としてメソッドを呼び出し、結果をコンソールに出力します。
このように、再帰を使うことでループ処理を書かずとも、簡潔に文字の出現回数をカウントできます。ただし、非常に長い文字列を扱う場合は再帰の深さ制限に注意が必要です。
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列
-
Pythonで与えられた数値がフィボナッチ数かどうかを判定する方法
本記事では、与えられた数値がフィボナッチ数であるかどうかを判定する問題の解決策について解説します。 問題の定義 ある数値 n が与えられたとき、その数値がフィボナッチ数であるかどうかを判定します。 第 n 項のフィボナッチ数は、直前の2つのフィボナッチ数の和として定義されることは広く知られています。しかし、フィボナッチ数列には漸化式以外にも興味深い数学的性質があります。 フィボナッチ数の判定条件 ある数値 n がフィボナッチ数であるのは、「5×n² + 4」または「5×n² − 4」のいずれかが完全平方数であるとき、かつそのときに限る この性質を利用すれば、フィボナッチ数列を実際に生成しなくて