###問題点
フィボナッチ数列と関数を呼び出した回数を求めるプログラムを書いたのですが、下記のプログラムでは関数を呼び出した回数がカウントされず次の部分
scanf("%d",&num);
printf("%d %d\n",fib(num),count);
これをint型の変数Fを用いて、
scanf("%d",&num);
F=fib(num);
printf("%d %d\n",F,count);
このようにしたら正確に実行することができました。これってなぜですかね?
C
1#include <stdio.h> 2 3int count; 4 5int fib(int n) 6{ 7count++; 8 9if(n==1 || n==2) 10return 1; 11return fib(n-1)+fib(n-2); 12} 13 14int main() 15{ 16int num; 17count=0; 18 19scanf("%d",&num); 20printf("%d %d\n",fib(num),count); 21 22return 0; 23 24}
また、カウントをポインタを使って行おうとして、次のようにプログラムを少し改良したのですが
Segmentation fault (コアダンプ)
と出ました。解決法を教えてください。
C
1#include <stdio.h> 2 3int *count; 4 5int fib(int n) 6{ 7*++count; 8 9if(n==1 || n==2) 10return 1; 11return fib(n-1)+fib(n-2); 12} 13 14int main() 15{ 16int num,F; 17*count=0; 18 19scanf("%d",&num); 20F=fib(num); 21printf("%d %d\n",F,*count); 22 23return 0; 24 25}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。