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

再帰を使用して自然数の合計を求めるC++プログラム

自然数とは、1から始まる正の整数のことです。

自然数の列は以下のように表されます。

1, 2, 3, 4, 5, 6, 7, 8, 9, 10……

本記事では、再帰(リカージョン)を利用して、最初のn個の自然数の合計を求めるC++プログラムを紹介します。再帰とは、関数が自分自身を呼び出すことで問題を段階的に解決していく手法です。

サンプルコード

以下は、再帰を使って最初のn個の自然数の合計を計算するC++プログラムの例です。

#include <iostream>
using namespace std;
int sum(int n) {
   if(n == 0)
   return n;
   else
   return n + sum(n-1);
}
int main() {
   int n = 10;
   cout<<"Sum of first "<<n<<" natural numbers is "<<sum(n);
   return 0;
}

実行結果

Sum of first 10 natural numbers is 55

プログラムの解説

上記のプログラムでは、関数sum()が再帰関数として動作します。処理の流れは以下のとおりです。

  • nが0の場合:0を返します。これは「最初の0個の自然数の合計が0である」ためで、これが再帰の終了条件(ベースケース)となります。
  • nが0より大きい場合:sum()は引数n-1を渡して自分自身を呼び出し、最終的にn + (n-1) + (n-2) + … + 2 + 1 の合計値を返します。

この再帰処理を示すコード部分は次のとおりです。

int sum(int n) {
   if(n == 0)
   return n;
   else
   return n + sum(n-1);
}

main()関数での出力処理

main()関数では、coutを使用して最初のn個の自然数の合計を画面に表示しています。該当するコードは以下のとおりです。

cout<<"Sum of first "<<n<<" natural numbers is "<<sum(n);

なお、n=10の場合、sum(10) → 10 + sum(9) → 10 + 9 + sum(8) … という形で呼び出しが連鎖し、最終的に55という結果が得られます。再帰を使うことで、ループ処理を書かずに簡潔に合計を求められる点が特徴です。

  1. 最初のn個の自然数の二乗和を求めるC++プログラムの解説

    はじめにこの記事では、最初のn個の自然数(1からnまで)の二乗和を求める方法について解説します。例えば、n = 4 の場合、計算結果は 1² + 2² + 3² + 4² = 1 + 4 + 9 + 16 = 30 となります。基本的なアプローチとしては、1からnまで繰り返すforループを使用し、各ステップで項の二乗を計算して合計に加算していく方法があります。このプログラムの計算量は O(n) です。しかし、O(1) の定数時間で解きたい場合は、次の級数の公式を利用できます。Σk² = n(n + 1)(2n + 1) / 6この公式を使えば、ループ処理を行わずに一発で答えを求めることが可能で

  2. Pythonの再帰関数を使って自然数の合計を求める方法

    再帰関数とは自分自身を呼び出す関数のことを「再帰関数」と呼びます。再帰処理をそのままにしておくと無限ループに陥ってしまうため、再帰呼び出しは必ず条件分岐の中に記述し、特定の条件を満たした時点で処理を終了させるのが基本です。自然数の合計を求めるPythonコード次のプログラムでは、ユーザーから入力された数値を受け取り、それを引数として rsum() 関数に渡します。rsum() 関数は、引数を1ずつ減らしながら自分自身を再帰的に呼び出し続け、引数が1に達したところで再帰を終了します。def rsum(n): if n <= 1: return n else: