OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

再帰呼び出し

  • 暇なときにでも
  • 質問No.155485
  • 閲覧数573
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 41% (5/12)

C++のクラスで
n!=n(n-1)(n-2)...1
n!を求めるprogramを作らなくてはならないのですが
再帰を使わずに、関数factorial(n)を使わないといけません。
ちんぷんかんぷんです。
for(counterとcounter--を使った)物しか思いうかびません。
関数factorial(n)を使うというのはnに戻るつまり再帰というふうには
ならないのですか?
関数と再帰の意味を漠然としかわかっていないのですが。
よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 30% (2593/8599)

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

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

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

その他の回答 (全1件)

  • 回答No.2

まるで、なぞなぞのようです。 階乗(factorial)のプログラムを作るのならば、factorial(n)を使わないといけないという意味がわからないし、クラスの設計力を試されているのなら、あえて再帰という言葉を使う意図がわかりません。 「何を作るのか」という事をはっきりさせた方がいいですよ。 関数の説明は省略しますが、再帰というのは、以下のように、関数が自分自身を呼び出している状態をさします。 ...続きを読む
まるで、なぞなぞのようです。
階乗(factorial)のプログラムを作るのならば、factorial(n)を使わないといけないという意味がわからないし、クラスの設計力を試されているのなら、あえて再帰という言葉を使う意図がわかりません。
「何を作るのか」という事をはっきりさせた方がいいですよ。

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

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


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ