- ベストアンサー
再帰的定義
(2n)!/(n!)^2 (n≧1) の再帰的定義を与えよ。 という問題が分かりません。 1から順に代入してみても規則性が分からなくて困っています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
関連する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・C++・C#
- 再帰
他の質問と平行してしまい申し訳ありません。再帰について少々おききしたいのですが、 配列の中にある数字の中から最大値と最小値を再帰処理でもとめたいのですが、うまくいきません。 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ループなどを使えるなら初期化だけループの外でやれば済むのですが、再帰だとどのようにすればよいのでしょうか。 宜しくお願いいたします。
- 締切済み
- Java
- 再帰関数について
非負の整数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 ) );で画面出力したいのですが・・・・・・。
- ベストアンサー
- C・C++・C#
- 再帰呼び出しの計算量
再帰呼び出しを用いた関数の計算量を求める方法がわからないので質問させていただきます. xのn乗を再帰呼び出しを用いて求める関数に関して,計算量を求める問題なのですが,どのような方針で求めればよいのでしょうか? int exponent(int x, int n) { if(n == 0){ return 1; }else{ return x * exponent(x, n-1); } } exponentがn回呼ばれるからO(n)というのは間違いでしょうか?
- ベストアンサー
- C・C++・C#
お礼
計算ミス申し訳ありませんでした。 なるほど、a_(n+1) = f(n)a_nと変形するんですね、理解できました。 ありがとうございました。