• ベストアンサー

フィボナッチ数列 プログラミング C言語

minaraiHの回答

  • minaraiH
  • ベストアンサー率25% (1/4)
回答No.4

longとfibの間は空白あけてください。同一文字みたいになった・・

関連するQ&A

  • フィボナッチ数列 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 とでました。 どこかちがいますか?

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

    ちょうど学校でフィボナッチ数列の話題になったので、思いつきで作ってみました。 そこで、配列を使ったものと再帰呼び出しを使ったものを作りました。 //再帰呼び出し 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番目の値を計算する関数 int fib(int n) を再帰的に定義し、この関数を利用してフィボナッチ数列の最初の10個を表示するプログラムを書けという問題があるのですが、大まかな流れは想像できるのですが、できないので困っております。  何方か教えてください。

  • C言語で分からないところがあるのですが……

    C言語で分からないところがあるのですが…… すみません。C言語の課題で分からないところがあり、質問しに来ました。 ユーザから数を受けて、そこまでのフィボナッチ数列を表示させるというプログラムです。 下のソースコード(でいいんですよね?)は正しいやつです。 for文を使って、繰り返しの作業を行うことに成功しましたが、doとwhileに書き換える作業がうまくできません。 どなたか助けてください。 #include<stdio.h> fib(int n) { if(n == 1)return(1); else{ if(n == 2) return (1); else return fib(n-1) + fib(n-2); } } main() { int n, i ; printf("INPUT the number. : "); scanf("%d",&n); for(i=1; i<=n; i++){ printf("F%d = %d\n",i, fib(i)); } }

  • C言語で分からない点があるのですが……

    C言語で分からない点があるのですが…… こんにちは。C言語を学んでいて、詰まったので宜しければ回答いただけると嬉しいです。 フィボナッチ数列に関するプログラミングです。 ユーザから数字を受け取ります。(第何項か) そこまでの数字を表示するというプログラムです。 n=3なら F1=1 F2=1 F3=2 という具合です。 しかし、実行した結果が添付した図の通りで、途中の項がすっ飛ばされていました。 どうすればいいんでしたっけ? 宜しければご助力ください!! #include<stdio.h> fib(int n) { if(n == 1)return(1); else{ if(n == 2) return (1); else return fib(n-1) + fib(n-2); } } main() { int n, i ; printf("INPUT number.: "); scanf("%d",&n); for(i=2; i<=n; i++){ printf("F%d = %d\n",n, fib(n)); } }

  • 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言語】フィボナッチの配列について

    フィボナッチの配列を表示するプログラムについてご質問でございます。 F[i]の計算というプログラムでございます。但し、F1=F2=1,n>2のとき、Fn-1+Fn-2=Fnでございます。 #include<stdio.h> #define N 10 int main() { int i,F[N+1]; / F[i]の計算 / for(i=1;i<=N;i++){ printf("%d\n", F[i]); } } この内、「/ F[i] の計算 /」の部分が分からず、困っております。 教えて頂けたら幸いです。

  • フィボナッチ数列

    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 の実行エラー」 と出てきてしまいます。 考えてみたのですが、エラーの理由がよくわかりません。 どこが間違っているのかなど、ご指摘いただければ嬉しいです。

  • フィボナッチ数列 C言語プログラミング

    フィボナッチ数列について、 プログラミングが得意な方、お願いします! F(0)=0, a(1)=1, F(n+2)=F(n+1)+F(n) (n>=0) 「xを入力し、 S(k)>=xを満たす最小のk及びF(k)の値を表示し、更にその値をファイルに記録する」 非常に勝手ですが、早めにお願いします!><

  • C言語 プログラミングで行詰まりました…

    標準入力(キーボード)からi,jk,nの値を入力し、次の漸化式を計算し、X_0からX_nまで求めるプログラムを作成したいのですが、うまく表示されません。どかがおかしいのかご指摘お願いします。 <漸化式> X_n=(a+b)/X_(n-1) , X_0=c(n=0) ================================================================== #include<stdio.h> float f_X(int a,int b,float c) { float y; y=(a+b)/c; return y; } int main (void) { int number,i,j; float k,l,n,X; printf("i:"); scanf("%d", &i); printf("j:"); scanf("%d", &j); printf("k:"); scanf("%f", &k); printf("n:"); scanf("%f", &n); X=k; printf("X_0= %.6f\n",X); for(number=1;number<=n;number++) { l=f_X(i,j,X); printf("X_%d= %.6f \n",number,l); X=l; } return 0; } ===================================================================