• ベストアンサー

フィボナッチ数列での第何項まで表示できるか。

HOGERA3の回答

  • ベストアンサー
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.1

型を double にすれば "%f" で DBL_MAX まで表示できます。 DBL_MAX は float.h で定義されていると思います。 // long long double 型ってのもあるけど // ANSI規格外だったような気がする...。

関連するQ&A

  • フィボナッチ数列をつくってみたけれど・・・

    ちょうど学校でフィボナッチ数列の話題になったので、思いつきで作ってみました。 そこで、配列を使ったものと再帰呼び出しを使ったものを作りました。 //再帰呼び出し unsigned long Fibonacci(int n){ if(n==1){ return 1;} //初項 else if(n==2){ return 1;} //第2項 return Fibonacci(n-1) + Fibonacci(n-2); } //配列 unsigned long Fibonacci(int n){ unsigned long long f[101]; int i; f[1] = 1; f[2] = 1; for( i=3; i<=n; i++){ f[i] = f[i-1] + f[i-2]; } return f[n]; } この二つを比較すると明らかに配列の方が早いです。 ということは再帰呼び出しはあまり使わない方がよいってことですよね? この場合は配列も似たような感じで見ることができますし。 それとも自分の再帰の書き方が悪いのでしょうか。

  • フィボナッチ数列のフローチャートの書き方

    フィボナッチ数列の第n項までの総和を求めるフローチャートの書き方を教えていただきたいです。

  • フィボナッチ数列の性質

    フィボナッチ数列の性質についてです。 ・左から数えて5番目ごとの数字は5で割り切れる。 ・(初項+第2項+第3項・・・・・+第n項) =第n項×(第n項+1) ・フィボナッチ奇数番目のフィボナッチ数をじゅんにたすと、最後の次の数になる。 ・フィボナッチ偶数番目のフィボナッチ数をじゅんにたすと、最後の次の数から1ひいたものになる。 ・フィボナッチ3つ続いたフィボナッチ数の、外2つをかけたものから中の2乗をひくと、(かわりばんこに)1か-1になる。 上のような性質があるのですが、これを数学的(記号などを使って)に表すとどのように書けますか?

  • フィボナッチ数列のプログラム

    問題で フィボナッチ数列のn番目の値を計算する関数 int fib(int n) を再帰的に定義し、この関数を利用してフィボナッチ数列の最初の10個を表示するプログラムを書けという問題があるのですが、大まかな流れは想像できるのですが、できないので困っております。  何方か教えてください。

  • フィボナッチ数列の一般化?

    数列{F_n}で、F_0=0、F_1=1が与えられていて、3項間の関係 F_(n+2)=F_(n+1)+F_nを満たすとき、フィボナッチ数列で、一般項も求まります。 これがF_0、F_1、F_2が与えられて、4項間の関係 F(n+3)=F_(n+2)+F_(n+1)+F_n を満たすとき、一般項は求まるのでしょうか。

  • フィボナッチ数列の配列について

    public class Fibonacci { public static void main(String[] args) { int [] fibAray = new int [20]; //フィボナッチ数列用の配列 fibAray[4] = 3; fibAray[1] = 1; for (int i = 0; i < fibAray.length; i++) { fibAray[i] = i + 1; } for (int i = 0; i < fibAray.length; i++) { System.out.println( "第" + (i + 1) + "頁は" + 3); } } } フィボナッチ数列の第20項までを配列にし、それらを"第4項は3"のように表示する。 という問題で作ったプログラムですが1項~20項まで3と表示されます。 これで合ってるのでしょうか?

    • ベストアンサー
    • Java
  • フィボナッチ数列のn番目の項をa[n]とすると

    フィボナッチ数列のn番目の項をa[n]とすると a[n]≦2^nとなることを証明せよという問題がわかりません・・・。 どなたか解説お願いします。

  • フィボナッチ数列 c言語

    c言語でフィボナッチ数列を求めるプログラムを再帰関数をつくり作れという問題でしたのように作りました。 windowsでcygwinというものを使ってコンパイルしています #include <stdio.h> int fib(int); main() { int n,i; printf(\"第何項までのフィボナッチ数? n=\"); scanf(\"%d\",&n); fib(0)=0; fib(1)=1; for(i=2;i<=n;i++){ print(\"f(%d)=%d\",n, fib(n));} } エラーは $ gcc fib2.c fib2.c: In function `main\': fib2.c:10: error: invalid lvalue in assignment fib2.c:10: error: invalid lvalue in assignment とでました。 どこかちがいますか?

  • フィボナッチ数列を使ったプログラミング

    プログラミング初心者です。 フィボナッチ数列を使ったプログラミングのお題が出ましたが、 このフィボナッチ数列(学校で習った記憶がありません)につまづき、 途中まで書いたプログラムが正しいか、どこか抜けいているのか、わからなくなってしまいました。 アドバイス頂けると幸いです。 お題) 整数を入力後、フィボナッチ数とフィボナッチ数の合計を計算して表示せよ。 なお、整数3以下の場合を入力した際は、エラーメッセージ”3以上を入力”を表示する。 *最初2項は、フィボナッチ数は1、1となる。 下記、スードコードで書いてみたドラフトです。フィボナッチ数列の式の中に出てくるnがindexを意味すると解釈し、index=n=0としたのですが、、 Fibonacci Declare num, Fibonacci number As integer num=0 fibN=0 index=n=0 sum=0 Prompt num Get num If(num<=3) Display”Error : whole number must be greater or equal to 3.” Else For(index=2; index<=num; index++) fibN=(1.0/sqrt(5))*(pow(1+sqrt((5))/2.0,n)-pow((1-sqrt(5))/2.0,n)) Display fibN EndFor Display sum=sum+finN EndIf END アドバイス、およびサンプルのプログラミングも掲載して頂けると幸いです。 なにせ初心者なので、わかりやすく説明頂けると有難いです。 よろしくお願い致します。

  • フィボナッチ数列

    C言語の問題です。 フィボナッチ数列について。 以下のプログラムはある整数を入力し、その整数以下のもっとも大きなフィボナッチ数列に含まれる整数を返すものである。 #include <stdio.h> int main(void){ int limit,new=1,pre=0,work result; scanf("%d", &limit); while(new<=limit){ /*printf("%d %d\n,pre,new);トレース用*/ work=new; new=work+pre; pre=work; } result =pre; printf("%d\n", result); } 以下を参考に、このプログラムの一部を関数にして書き換えなさい。 #include <stdio.h> /*ここに関数を記述*/ int main(void){ int limit,result; scanf("%d",&limit); result = fibnum(limit); printf("%d\n", result); } という問題です。 私は以下のように考えたのですが… #include <stdio.h> void fibnum(int limit){ int f0, f1; f0 = 0; f1 = 1; printf("%d\n", f0); printf("%d\n", f1); while(1){ f0 += f1; if (f0 > limit)return; printf("%d\n", f0); f1 += f0; if (f1 > limit)return; printf("%d\n", f1); } } int main(void){ int limit, result; scanf("%d",&limit); result = fibnum(limit); printf("%d\n", result); return result; } 実行すると 「S:\デスクトップ\v\v.cpp(30) : error C2440: '=' : 'void' から 'int' に変換することはできません。(新しい動作 ; ヘルプを参照) void 型の式は他の型へ変換できません。 cl.exe の実行エラー」 と出てきてしまいます。 考えてみたのですが、エラーの理由がよくわかりません。 どこが間違っているのかなど、ご指摘いただければ嬉しいです。