• ベストアンサー

再帰的定義

(2n)!/(n!)^2 (n≧1) の再帰的定義を与えよ。 という問題が分かりません。 1から順に代入してみても規則性が分からなくて困っています。 よろしくお願いします。

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

  • ベストアンサー
  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.4

> 計算してみたら、 > 2(n+1)/(n+1)^2 = 2/(n+1) > となったのですが、まだ分かりません。 分子が違います。 a_(n + 1) = { 2(n + 1) }! / { (n + 1)! }^2 = (2n + 2)! / { (n + 1)! }^2 よって、a_(n + 1)の分子は (2n + 2)! =(2n + 2)(2n + 1)(2n)(2n - 1)(2n - 2)…(3)(2)(1) となります。 a_nの分子は(2n)! = (2n)(2n - 1)(2n - 2)…(3)(2)(1)なので、 a_(n+1)とa_nを約分したら(2n + 2)(2n + 1)が残ります。 つまり、質問者さんの計算結果には(2n + 1)が抜けているんです。 (ANo.2の方へのお礼欄に書かれている式に関しては、(2n - 1)が抜けていませんか?) > すみません、どうしても理解できないので、解法を教えて下さると助かります。 a_(n+1) / a_n = f(n)となった時、この式の両辺にa_nをかければ a_(n+1) = f(n)a_nとなり、再帰的定義の形になるはずです。

reine1
質問者

お礼

計算ミス申し訳ありませんでした。 なるほど、a_(n+1) = f(n)a_nと変形するんですね、理解できました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

a_(n+1) / a_n を計算すればわかる, はず.

reine1
質問者

お礼

ありがとうございます。 計算してみたら、 2(n+1)/(n+1)^2 = 2/(n+1) となったのですが、まだ分かりません。 すみません、どうしても理解できないので、解法を教えて下さると助かります。

全文を見る
すると、全ての回答が全文表示されます。
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

答えを出してしまうのは拙そうだからヒントだけ。 (2n)!/(n!)^2=(2n)(2n-1)(2n-2)!/(n^2)((n-1)!)^2 まあほとんど答えだけど。

reine1
質問者

お礼

すみません、こっちが正しいです。 a_1=2 a_n=(2n/n^2)*(a_n-1)=(2/n)*(a_n-1) (n≦2) と思ったのですが、数が合いません。 ほとんど答えみたいなのですが、まだ理解できません、お願いします。

reine1
質問者

補足

a_1=2 a_2=(2n/n^2)*(a_n-1)=(2/n)*(a_n-1) (n≦2) と思ったのですが、数が合いません。 ほとんど答えみたいなのですが、まだ理解できません、お願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

数値を代入して本当に計算しちゃうとかえってわからなくなるかも. 今の場合に限っていえば a_n = (2n)! / (n!)^2 とおいて a_(n+1) と a_n がどういう関係にあるかを考えてみてください. ヒネらずに, 単純に答えれば多分それで正解のはず.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【数学基礎】漸化式と再帰的定義

    漸化式とよばれる式と、再帰的定義とよばれる式の区別ができません。 例えば(ご説明で他の適した例があれば、ご紹介ください)、 フィボナッチ数列でいえば、 F(n)=F(n-1)+F(n-2) (2≦nの場合),F(0)=0 であったり、 階乗であれば、 n!=n×(n-1)! n (n=1,2,3,...の場合) n!=1(n=0の場合) といった式の説明に対して 「これは漸化式である」であったり「これは再帰的定義である」という 記述を散見します。 私のイメージとしては、 ・漸化式は一般式を求める前段階の式 ・再帰的定義は左辺を右辺で定義している式 です(上記認識が誤りであれば、ご指摘くださいませ)。 私が混乱しているのは、 一つの式を「漸化式である」であったり「再帰的定義である」と 表現してみたりする判断基準がわかりません。 「なんとなく」文脈で使い分けているようにも思えるのですが、 曖昧なまま学習を進めることに不安を感じており、質問させて いただきました。 漸化式と再帰的定義についての違いについて教えて下さいませ。 よろしくお願いします。

  • C言語 再帰呼びだし

    C言語 再帰呼びだし 問題が解けません。もしよろしければご指導お願いします。 フィボナッチ数を求めるプログラミングを作成せよ。 非負の整数nに対するフィボナッチ数Fnは以下のように再帰的に定義される。 Fn=0 (n=0の時) Fn=1 (n=1の時) Fn=F(n-1)+F(n-2) (n>1の時) ・関数int fibo(int n)を作成し、関数mainで、複数のnに対して関数fiboを呼びだし、その結果を表示せよ。 ・関数fiboは、再帰的にfiboを呼びだすようにせよ。 よろしくお願いします。

  • 再帰呼び出し

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

  • 再帰

    他の質問と平行してしまい申し訳ありません。再帰について少々おききしたいのですが、 配列の中にある数字の中から最大値と最小値を再帰処理でもとめたいのですが、うまくいきません。 public int minMax(n, array, min, max){ // nは配列のサイズです。 min=max=array[n-1]; if(array[n-2]<min) min=array[n-2]; if(array[n-2]>max) max=array[n-2]; return minMax(n-1,array,min,max); } 最初に比較するために min=max=array[n-1];と初期化したのですが、再帰処理ですからまた同じ初期化をしてしまうことになります。 forループなどを使えるなら初期化だけループの外でやれば済むのですが、再帰だとどのようにすればよいのでしょうか。 宜しくお願いいたします。

  • 再帰関数について

    非負の整数nに対して次のように定義された 関数F(n),G(n)がある。F(5)の値はいくらか。 関数 F(n):if n=<1 then return1 else return n×G(n-1) G(n):if n=0 then return0 else return n+F(n-1) (1)50 (2)65 (3)100 (4)120 正解 (2)65 以下解説 F(5):5×G(5-1)=5×(G(4))    =5×(4+F(4-1))=5×(4+(F(3)))    =5×(4+(3×G(3-1)))=5×(4+(+3×G(2))))    =5×(4+(3×(2+F(2-1))))=5×(4+(+3×(2+F(1)))))    =5×(4+(3×(2+(1))))    =65 再帰関数についての知識が皆無なので 教えて頂きたいのですが、なぜ=後の5×は残るのでしょうか。 そもそも再帰関数とは、どんなことを言っているのでしょうか。 具体例を挙げて頂くか、分かり易いURLを教えて頂けると幸いです。 お手数ですが、上記について1つ1つ丁寧に解説して頂きたいです。 大変ご迷惑な質問かと思いますが、分かる方おられましたら、 お手数ですが、ご教授お願いします。 以上、よろしくお願い致します。

  • 再帰的定義と体系の強さ

    再質問になります、ご容赦ください。 [ゲーデルに挑む 田中一之]のp152の記述に、形式的な定義は略記に限るものとし x^0=1 x^(y+1)=x^y・x のような再帰的な(略記でない)定義で論理式を形式体系に付け加えることは公理を増やすことに他ならず体系の強さが変わってしまう可能性がある とあるのですが、これはどういうことでしょうか。 つまり、再帰的定義は記号の使い方を定めているだけであり(上の例であれば、関数記号^の記号としての使い方)、この定義によって初めてその記号が登場してくるならば、それによって体系内で何か新しいことができるようになったりはしないと思うですが...。すなわち定義を追加するだけでは、公理を増やすことにはならず体系の強さも変わらないと思うのです(もちろん、定義するだけでなく、定義した記号に関する公理を追加すれば話は別ですが)。 この方面に詳しい方いらっしゃいましたらお助け下さい、よろしくお願いします。

  • 写像・再帰的定義について

    ρは、X^* → X^*  ρ:x1x2x3x4x5x6...xn→xnxn-1xn-2...x2x1 (xk∈X (k=1,2,3,.....)x1x2x3x4x5x6...xn ∈X^* とします) とするような写像だとすれば この写像ρを再帰的に定義せよ。 という問題で 自分は ――――――――――――――――――――――――――――――――― 初期段階 ρ(∧)=∧ 再起段階 ρ(wx) = xρ(w) ――――――――――――――――――――――――――――――――― としたのですがこれではまちがいですか?? なんか再帰的ではないような気がして・・・

  • 再帰アルゴリズム

    再帰アルゴリズムの練習のため問題に取り組んでいるのですが、問題集に解答がついておらずイマイチ理解できていないので教えていただけると助かります。 d個の毎インデックスで(0,0,...,0)から(n,n,...,n)まで反復させるアルゴリズムを反復アルゴリズムと再帰アルゴリズムの両方考えよ です。 (0,0,0,...,0) (1,0,0,...,0) (1,1,0,...,0) (1,1,.....,1) ... (n,n,.....,n) と表示を繰り返すプログラムでいいのかな、と思い反復の方は二十ループを用いてプログラムかけたんですが、再帰の法がアルゴリズムがどうも理解できていません。 ご教授願えればと思い、お願いします。

  • 関数の再帰処理

    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657... という数列(フィボナ数列)を再帰処理でだしたいのですが・・・・・ include <stdio.h> int function( int ); int main( void ){ int n; do { printf( "0 以上の整数値を入力して下さい→ " ); scanf( "%d", &n ); }while ( n < 0 ); printf( "計算結果: %d\n", function( n ) ); getchar(); getchar(); return 0; } int function( int n ){ //フィボナの処理(function)の再帰呼び出しによる } function内に再帰処理を用いてprintf( "計算結果: %d\n", function( n ) );で画面出力したいのですが・・・・・・。

  • 再帰呼び出しの計算量

    再帰呼び出しを用いた関数の計算量を求める方法がわからないので質問させていただきます. xのn乗を再帰呼び出しを用いて求める関数に関して,計算量を求める問題なのですが,どのような方針で求めればよいのでしょうか? int exponent(int x, int n) {   if(n == 0){     return 1;   }else{     return x * exponent(x, n-1);   } } exponentがn回呼ばれるからO(n)というのは間違いでしょうか?