###実現したいこと
関数の中でループをしてしまうのを治したい。ループし続ける原因を教えてください。
printf("funk_x=%lf\n",x);
これは確認用なのだが、これがループし続けるので永久に結果が出てこない。
###問題点
実行結果
実数xを入力してください 1.5 funk_x=1.500000 funk_x=1.500000 funk_x=1.500000 funk_x=1.500000 funk_x=1.500000 funk_x=1.500000 funk_x=1.500000 . . . これがずっと続く。
###コード
C
1#include<stdio.h> 2#include<math.h> 3 4//非負整数kを引数とし(-1)^kの戻り値とする関数 5int turn(int k) 6{ 7 int po=-1; 8 int t=pow(po,k); 9 //printf("(-1)^%d=%d ",k,t); 10 return t; 11} 12 13//非負整数kを引数とし、k!の値を戻り値とする関数 14int fact(int k) 15{ 16 int i,f=1; 17 if(k==0){ 18 int f=1; 19 }else{ 20 for(i=2;i<=k;i++){ 21 f*=i; 22 } 23 } 24 //printf("%d!=%d\n",k,f); 25 return f; 26} 27 28//実数xを非負整数kとし、x^kの値を戻り値とする関数 29double power(int k,double x) 30{ 31 //printf("x=%f\n",x); 32 double p=pow(x,k); 33 //printf("%lf^%d=%lf\n",x,k,p); 34 return p; 35} 36 37//実数xを引数とし、式の値を戻り値とする関数 38double func_ex(double x) 39{ 40 printf("funk_x=%lf\n",x); 41 double ans; 42 int k; 43 for(k=0;k<=12;k++){ 44 ans+=(turn(k)*power(k,x))/func_ex(x); 45 } 46 return ans; 47} 48 49int main(void) 50{ 51 double x; 52 printf("実数xを入力してください "); 53 scanf("%lf",&x); 54 double func=func_ex(x); 55 printf("計算結果は%fです",func); 56 return 0; 57}
回答1件
あなたの回答
tips
プレビュー