【Python】ループを使わずに1から指定した上限までの数値を出力する方法
Pythonでは、for文やwhile文などのループ構文を使用せずに、指定した範囲内の数値を出力することが可能です。その鍵となるのが再帰(リカージョン)です。具体的には、数値を出力するたびに引数を1ずつ減らしながら自分自身を呼び出すメソッドを定義することで、ループと同等の処理を実現します。
以下に、実際の動作例を示します。
サンプルコード
def print_nums(upper_num):
if(upper_num>0):
print_nums(upper_num-1)
print(upper_num)
upper_lim = 6
print("The upper limit is :")
print(upper_lim)
print("The numbers are :")
print_nums(upper_lim)実行結果
The upper limit is : 6 The numbers are : 1 2 3 4 5 6
コードの解説
print_numsという名前の関数を定義します。関数内部では、まず引数
upper_numが0より大きいかどうかを判定します。0より大きい場合、引数を1減らして自分自身を再帰的に呼び出します。これにより、小さい数値から順に処理が積み上げられていきます。
再帰呼び出しが完了した後に
print()で現在の数値を表示するため、結果として1から順番に出力されます。関数の外側では、出力したい範囲の上限値として
upper_lim = 6を定義しています。最後に、上限値を引数として渡して
print_numsを呼び出し、結果をコンソールに表示します。
ポイント:再帰の仕組み
このプログラムでは、print_nums(6) → print_nums(5) → … → print_nums(1) と呼び出しが連鎖し、引数が0になった時点で再帰が停止します(ベースケース)。その後、呼び出しが逆順に戻りながら各数値が出力されるため、ループなしでも1から6までの数値が正しく表示されます。
なお、再帰には呼び出しの深さに制限があるため、非常に大きな数値を扱う場合は注意が必要です。Pythonのデフォルトの再帰上限は約1000回です。
-
【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装
はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数
-
ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法
本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに