Python
 Computer >> コンピューター >  >> プログラミング >> Python

再帰を使って2つの数の積を求めるPythonプログラム

再帰(リカージョン)の手法を用いて2つの数値の積を求めるには、シンプルなif条件と再帰呼び出しを組み合わせます。

再帰とは、大きな問題をより小さな部分問題に分割して計算し、その結果を組み合わせることで全体の解を導き出す手法です。掛け算を「足し算の繰り返し」として捉えることで、再帰的に積を計算できます。

サンプルコード

以下に具体的な実装例を示します。

def compute_product(val_1,val_2):
   if(val_1<val_2):
      return compute_product(val_2,val_1)
   elif(val_2!=0):
      return(val_1+compute_product(val_1,val_2-1))
   else:
      return 0
val_1 = int(input("Enter the first number... "))
val_2 = int(input("Enter the second number... "))
print("The computed product is: ")
print(compute_product(val_1,val_2))

実行結果

Enter the first number... 112
Enter the second number... 3
The computed product is:
336

コードの解説

  • まず、2つの数値を引数として受け取る「compute_product」という名前の関数を定義します。
  • 1つ目の値が2つ目の値より小さい場合は、引数を入れ替えたうえで関数を再度呼び出します。これにより、2つ目の値を減算しながらループさせる回数を最小限に抑えられます。
  • 2つ目の値が0でない場合は、「2つ目の値から1を引いた値」を渡して関数を再帰的に呼び出し、その戻り値に1つ目の値を加算した結果を返します。
  • 2つ目の値が0になった時点で再帰が終了し、関数は0を返します。これが再帰の終了条件(ベースケース)となります。
  • 関数の外部では、input()を使ってユーザーから2つの整数を入力として受け取ります。
  • 入力された2つの値を引数としてcompute_product関数を呼び出し、その結果をコンソールに表示します。

このように、掛け算を再帰的な足し算に置き換えることで、乗算演算子を使わずに2つの数の積を求めることができます。ただし、大きな数同士の計算では再帰呼び出しが深くなりすぎる可能性があるため、実用場面では通常の乗算演算子を使うのが一般的です。

  1. 3つの数値から最大値を見つけるPythonプログラム

    このチュートリアルでは、3つの数値の中から最大値を求めるPythonプログラムを作成します。3つの数値が与えられたとき、その中で最も大きい数値を見つけることが目標です。まず、理解を深めるためにサンプルのテストケースをいくつか見てみましょう。入力: a, b, c = 2, 34, 4 出力: 34入力: a, b, c = 25, 3, 12 出力: 25入力: a, b, c = 5, 5, 5 出力: 5それでは、3つの数値の中から最大値を求める手順を見ていきましょう。アルゴリズム1. 3つの数値 a、b、c を初期化する。 2. a が b と c の両方より大きければ、a を出力する。

  2. Pythonで数値が2の累乗かどうかを判定するプログラム

    本記事では、与えられた数値が2の累乗(べき乗)であるかどうかを判定する方法について、考え方と実装手順をわかりやすく解説します。 問題の定義 ある整数 n が与えられたとき、その数が2の累乗(1, 2, 4, 8, 16, …)であるかどうかを判定します。 アプローチ 判定には「繰り返し2で割る」というシンプルな方法を使います。考え方は以下の通りです。 入力された数値 n を、1になるまで繰り返し2で割っていきます(n = n // 2)。 割る過程で n % 2 の結果が0以外(奇数)になり、かつ n が1でない場合は、その数は2の累乗ではありません。 最終的に n がちょうど1になれば、そ