###前提・実現したいこと
c言語で円周率を出すためのプログラムを作成しています。
###発生している問題・エラーメッセージ
コマンドライン引数の値から円周率出す(=値が大きいいほど円周率に近くなる)のですが200000ほどの数になると計算せずに停止してしまいます。
Segmentation fault: 11
###該当のソースコード
c言語
1/*これは円周率を出すプログラムですF2*/ 2 3#include <stdio.h> 4#include <stdlib.h> 5#include <math.h> 6 7double woris(double i); 8 9int main(int argc, char *argv[]) { 10 double a = atof(argv[1]); 11 printf("%.3f\n",woris(a)*2); 12 return 0; 13} 14 15double woris(double i){ 16 double answer = 0.0; 17 double dumper = i; 18 while(i>(double)0){ 19 if(dumper == (double)0){ 20 break; 21 }else if((int)i == 1){ 22 answer = (4*i*i)/(4*i*i-1); 23 return answer; 24 break; 25 }else{ 26 dumper = dumper -1; 27 answer = (4*i*i)/(4*i*i-1) * woris(dumper); 28 return answer; 29 } 30 } 31 return answer; 32}
###試したこと
float型だったものをdouble型にするなどをして徐々に桁の大きいものを計算することができるようになりました。しかし、
###補足情報(言語/FW/ツール等のバージョンなど)
macでxcodeをつかって入れたgccです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/16 14:22