質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

受付中

フィボナッチ数列をC言語で表したいのですが、うまくいきません。

sho888
sho888

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

4回答

0グッド

0クリップ

546閲覧

投稿2022/10/18 22:45

前提

フィボナッチ数列とは,漸化式 an=an-1+an-2 で定められる数列であり,たとえば次のような数列を指す.

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

2, 5, 7, 12, 19, 31, 50, 81, ...

キーボードから3つの整数 p, q, n を読み取って,初項 a1=p, 第2項 a2=q で定められるフィボナッチ数列の,第 n 項を出力するプログラムを作成せよ. p,q,n はいずれも正の整数であると仮定してよい(エラーチェックをする必要はない).

なお,この課題では 3つの引数 p, q, n を取る関数 int fibcompute() を作成して,用いること.

この課題を解くには、どうしたらよいですか?
コードは自分なりに作りました。
改善案ください。お願いいたします。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ▲▲機能を動作するようにする

発生している問題・エラーメッセージ

エラーメッセージ

#include <stdio.h>

int a1,a2;

int fibocompute(int p,int q, int n);

int main(void){
int d,p,q,n;
scanf("%d%d%d", &p, &q, &n);

d= fibocompute(p,q,n);

printf("The answer is: %d",d);

return 0;

}
int fibocompute(int p,int q, int n){

a1=p; a2=q; int i; for(i=0;i<n;i++){ a2=i+a1; a1=i; i=a1;

}

return 0;

}

C言語

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/10/19 11:34

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

int32_t

2022/10/18 22:56

コード全体を「```」だけの行で囲んでください。現状では読みにくいです。 現状のコードで、どういう動作をすると期待していて、実際はどういう動作をするのでしょうか。
PondVillege

2022/10/18 23:08

ループの中でiはフィボナッチ数の演算に不要で,漸化式のindexでしかないので書き直してみましょう i番目時点のフィボナッチ数を入れるa3を作るのがいいかもしれませんね
y_waiwai

2022/10/18 23:16

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください

回答4

2

C

1#include <stdio.h> 2 3int main(void) 4{ 5 int p = 2, q = 5, n = 6; 6 while (--n > 0) q += p, p = q - p; 7 printf("%d\n", p); 8}

fibocompute の参考になりますか?

投稿2022/10/19 12:42

kazuma-s

総合スコア8087

jimbe, ALOHAMSを押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

fibocompute()の戻り値を変数dに入れてますが、fibocompute関数の最後でreturn 0となっており、
変数dには0しか入らない点と、フィボナッチ数列の計算部分を直せば解けると思います。
参考:フィボナッチ数の計算

投稿2022/10/19 00:48

編集2022/10/19 01:00
ALOHAMS

総合スコア179

jimbe👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

課題ならまんまな記述は避けますが、

c

1#include <stdio.h> 2int main(void) { 3 int p=2, q=5, n=6; 4 5 int j=0; 6 int a[]={p,q}; 7 for(int i=0; i<n-1; i++, j^=1) a[j] += a[j^1]; 8 printf("The answer is: %d\n", a[j]); 9 return 0; 10}

plain

1The answer is: 31

とか出ます。

投稿2022/10/19 11:31

jimbe

総合スコア10819

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

n>2 条件判定を増やす

int a1,a2; int fibocompute(int p,int q, int n); int fibocompute(int p,int q, int n){ a1=p; a2=q; int i; int temp=0;//tempは一時変数 //a1=2,a2=5 を例にとる for(i=0;i<n-2;i++){ temp=a1+a2;//temp=2+5=7 a1=a2;//a1=5 a2=temp;//a2=7 } return a2; //n=3 の場合、3 番目の項 2、5、7、7 が結果です。 } int main(void){ int d,p,q,n; scanf("%d%d%d", &p, &q, &n); if(n==1){ printf("The answer is: %d",p);//answer is 2 return 0; } if(n==2){ printf("The answer is: %d",q);//answer is 5 return 0; } if(n>2){ d= fibocompute(p,q,n); printf("The answer is: %d",d); return 0; } return 0; }

投稿2022/10/19 02:35

編集2022/10/20 01:36
fenyun

総合スコア20

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

jimbe

2022/10/19 11:06

n が 1 と 2 の場合に fibocompute() を用いていないのは条件に反するように思います。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。