解決済みの質問

再帰呼び出し

C++のクラスで
n!=n(n-1)(n-2)...1
n!を求めるprogramを作らなくてはならないのですが
再帰を使わずに、関数factorial(n)を使わないといけません。
ちんぷんかんぷんです。
for(counterとcounter--を使った)物しか思いうかびません。
関数factorial(n)を使うというのはnに戻るつまり再帰というふうには
ならないのですか?
関数と再帰の意味を漠然としかわかっていないのですが。
よろしくお願いします。

投稿日時 - 2001-10-22 16:00:43

連想キーワード:

QNo.155485

暇なときに回答ください

質問者が選んだベストアンサー

C++は知りませんがC言語の知識で。
factorial関数を使うなら簡単ですね。k=factorial(n)
これでNの階乗がkに入るはずです。

再帰処理は、関数の中でやっているかもしれません。
再帰処理を簡単に説明すると、factorialの中でfactorialを使うというような奇妙な組み方です。
もう少しわかりやすく言うと、10!を計算するように言われたとき10を横にどけて9!を計算するように自分自身に命令しなおします。これを繰り返していくと最後は1!=1を計算することになります。
後は逆向きに戻りながら掛け算をしていき、最後に10!が求まります。

ところで、factorialは自分で組むのですか?

投稿日時 - 2001-10-22 21:30:02

ANo.1

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.2

まるで、なぞなぞのようです。
階乗(factorial)のプログラムを作るのならば、factorial(n)を使わないといけないという意味がわからないし、クラスの設計力を試されているのなら、あえて再帰という言葉を使う意図がわかりません。
「何を作るのか」という事をはっきりさせた方がいいですよ。

関数の説明は省略しますが、再帰というのは、以下のように、関数が自分自身を呼び出している状態をさします。

int factorial(int n)
{
if (n > 2) n *= factorial(n - 1);
return n;
}

投稿日時 - 2001-10-22 22:06:08

あわせてチェックしたい
  • 再帰呼び出しについて(基本) ...
  • 再帰呼び出しの計算量 ...
  • 再帰呼び出しを用いるnPk,nCk 計算プログラム作成 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら