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

【Java】ループを使わずに数列を出力するプログラム ~再帰呼び出しの活用~

はじめに

通常、数列を出力するには for 文や while 文などのループ処理を使用します。しかし、Javaでは「再帰呼び出し(リカージョン)」を利用することで、ループ構文を一切使わずに同じ処理を実現できます。再帰とは、メソッドが自分自身を呼び出す仕組みであり、条件分岐と組み合わせることで繰り返し処理を代替できる強力なテクニックです。

本記事では、0から15までの数値をループなしで出力するJavaプログラムを紹介します。

サンプルコード

public class Demo{
    public static void main(String[] args){
        int my_num = 0;
        System.out.println("The numbers without using loop have been printed below");
        print_without_loop(my_num);
    }
    public static void print_without_loop(int my_num){
        if(my_num <= 15){
            System.out.print(my_num + ",");
            print_without_loop(my_num + 1);
        }
    }
}

実行結果

The numbers without using loop have been printed below
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,

プログラムの解説

クラス Demomain メソッド内では、まず変数 my_num が 0 で初期化されます。その後、print_without_loop メソッドが呼び出されます。

print_without_loop メソッドでは、引数として渡された数値が 15以下であるかどうか を if 文で判定します。条件を満たしている間は、次の処理が繰り返されます。

  • 現在の数値を出力する
  • 数値を1つ増やして、自分自身を再度呼び出す

これにより、0から始まる数値が1ずつ増加しながら順番に出力されます。そして数値が15に達すると、条件式が false となり再帰呼び出しが停止し、プログラムが正常に終了します。

まとめ

このように、再帰を使えばループ構文なしでも繰り返し処理を実装できます。ただし、再帰の呼び出しが深くなりすぎるとスタックオーバーフローが発生する可能性があるため、大規模なデータを扱う場合は注意が必要です。小規模な処理や学習目的においては、ループと再帰の違いを理解するのに最適な題材と言えるでしょう。

  1. 【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つの関数

  2. ループを使わずに数列を出力する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に