Pythonの再帰関数を使って自然数の合計を求める方法
再帰関数とは
自分自身を呼び出す関数のことを「再帰関数」と呼びます。再帰処理をそのままにしておくと無限ループに陥ってしまうため、再帰呼び出しは必ず条件分岐の中に記述し、特定の条件を満たした時点で処理を終了させるのが基本です。
自然数の合計を求めるPythonコード
次のプログラムでは、ユーザーから入力された数値を受け取り、それを引数として rsum() 関数に渡します。rsum() 関数は、引数を1ずつ減らしながら自分自身を再帰的に呼び出し続け、引数が1に達したところで再帰を終了します。
def rsum(n):
if n <= 1:
return n
else:
return n + rsum(n-1)
num = int(input("数値を入力してください: "))
ttl = rsum(num)
print("合計は", ttl)実行例
このプログラムを実行すると、入力した数値までの自然数の合計が出力されます。
数値を入力してください: 10 合計は 55
処理の流れを解説
例えば入力が 10 の場合、rsum(10) は「10 + rsum(9)」、rsum(9) は「9 + rsum(8)」というように順番に展開されていきます。そして rsum(1) が 1 を返した時点で再帰が止まり、10 + 9 + 8 + … + 1 = 55 という計算結果が確定します。
このように再帰を使うと、「1からnまでの合計」という問題を「n + (1からn-1までの合計)」というより小さな同じ種類の問題に分解して表現できます。コードがシンプルになり可読性も高まりますが、大きな数値を扱う場合は再帰の深さ制限に注意が必要です。
-
Pythonでリストの数値の合計を求める方法【sum()関数の使い方】
Pythonには、リストやタプルなどのイテラブル(反復可能)オブジェクトに含まれる数値の合計を簡単に求められる組み込み関数 sum() が用意されています。ループ処理を自分で書く必要がなく、1行のコードで合計値を取得できるため、数値データを扱う場面で非常に便利です。sum()関数の基本構文sum() 関数は、次のように最大2つの引数を受け取ります。sum(iterable, start)iterable:合計を求めたいリスト、タプル、rangeオブジェクトなどstart:合計に加算される初期値(省略可能、デフォルトは0)基本的な使用例まずは、数値のリストの合計を求める最もシンプルな例です。&g
-
Pythonで素数を生成する方法をわかりやすく解説
素数とは何か? 素数とは、1とその数自身以外の正の整数では割り切れない数のことです。たとえば、2、3、5、7、11などが素数に該当します。なお、1は約数を1つしか持たないため、素数には含まれない点に注意しましょう。 Pythonで素数を判定する基本的な考え方 Pythonでは、剰余演算子「%」を使うことで、ある数が別の数で割り切れるかどうかを簡単に調べられます。x % y の結果が0であれば、xはyで割り切れることを意味します。 1から100までの範囲で素数を求める場合、各数値(仮にxとします)について、2からx-1までのすべての数で順番に割り切れるかを確認する必要があります。この処理は、二