マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第9章 関数の再帰的使用

第13話 1 + 2 + 3 + ・・・ + n を関数の再帰的利用で計算する!



1から10までの和は55です。

を実現するプログラムコード例

#include<iostream>//インクルードファイルiostreamの読み込み


#include<conio.h>//while(!_kbhit());を使うためのお呪い

#include<string> //文字列変数を使えるようにするために組み込む


#include <iomanip> //setprecisionを使えるように組み込む


#include <cmath>//powなどを使うときに必要


#include <ctime>//time()(←現時刻発生する関数)を使うために必要


using namespace std;//coutを使うときに必要なお呪い


const int n = 10;//具体的な数字を使うのではなく、 n を使うと汎用性のあるプログラムになる!


void f(int s);//順列生成関数←引数名をgからsに変更(2026年3月19日)


int a[25]; //将来5次魔方陣まで生成できるように25に変更


int 合計 = 0; //gは合計を計算するための変数

int main() {


   f(0);


   cout << "1から" << n << "までの和は" << 合計 << "です。" << endl;



   while (!_kbhit());//待機させるための命令



   return(0);


}


void f(int s) {


    合計 = 合計 + s + 1;


    if (s + 1 < n)f(s + 1);


}

n = 100 の実験結果


1から100までの和は5050です。



n = 1000 の実験結果


1から1000までの和は500500です。


n次順列のコードに比べるとはるかに簡単です。

次は n! を計算させることを考えましょう。

階乗の計算あっという間に大きくなってしまうので、

n は15以下ぐらいにしてください。

int 積 = 1; //gは合計を計算するための変数

とすることも忘れないようにしましょう。


1から10までの積は3628800です。





第9章第12話へ 第9章第14話へ

本講義トップへ