を計算したくて書いていたのですがどうもうまくいきません。
桁あふれ的な何かかと思って考えていたのですが分かりませんでした。
下のコードの#define MAX が1のとき2のとき3以上のときでFibo()の結果が変わってしまいます。
main関数の中にprintf("%d\n\n",Fibo(10)); がたくさんあるのはどこで変になっているか見るためです。
整数の読みとりはfgets関数を使わなければなりません。
プログラミング環境等はまだよく分からないのでこのサイト(https://www.tutorialspoint.com/compile_c_online.php)
を使っています。
誰かお助け願います。
#include <stdio.h>
#include <stdlib.h>
#define MAX 2
//フィボナッチ数列一般項F_n//
int Fibo(int n)
{
int i, F[n+1];
F[1]=1;
for(i=0;i<=n+1;i++)
F[i+2]=F[i+1]+F[i];
return F[n];
}
int main(void)
{
printf("整数nを入れるとフィボナッチ数列n項目F_nを出力します。\n\n");
char moji[MAX]; int n;
printf("%d\n\n",Fibo(10));
fgets(moji, MAX, stdin);
printf("%d\n\n",Fibo(10));
int m = atoi(moji);
printf("F_%d = %d",m,Fibo(m));
return 0;
}