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