• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#のfor文)

C#のfor文に関する質問

このQ&Aのポイント
  • C#のfor文に関する質問です。for文内の計算式の結果を正しく理解できないため、質問しました。
  • 具体的には、for文の1回目のループの最終行でのfactの値が0になるかどうかについての疑問です。
  • 理解できない計算式を含むコードの解釈について、初心者ながら質問をしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

ですね。 数学的には合っているけど、プログラム的には間違っているんです。 sinを展開して計算してるんですが、最初に0の階乗は1に定義されるのでそれをプログラミングしなければなりません。(テーラー展開) 安直に if (fact==0){fact=1;} を入れるんですね。

noname#199771
質問者

お礼

サンプルが変だったんですね。 半分安心しました。 疑ってかかりながら読むのは初心者にはキツイですが納得です。 ありがとうございました。

その他の回答 (3)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.4

ごめんなさい。何度も。 x*=xx; で良いのですね。 最初に xx=-x*x やってました。お恥ずかしい。あまり見ずに回答して申し訳ない。

noname#199771
質問者

お礼

いえいえ、とんでもありません。 xxという名前があまりよくないということでしょう。 自分でコードを書くときには気をつけたいと思いました。 ありがとうございました。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.3

そうですね。 それから x *= -xx; ですね。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

No1です。ごめんなさい。私も間違っている。単にif文いれただけではだめです。 初期化しているのに(0!で割る最初の項)iのまわし方が正しくない。 というか色々やり方はあるので考えてください。 少なくともこのままではsinが正しく出てこないばかりか、0割エラーになることは正しいです。 http://akita-nct.jp/yamamoto/lecture/2006/3E/2nd/html/node2.html ここにsinのテーラー展開が記述されていますので、それのようにプログラミングする。 間違ってごめんなさい。

noname#199771
質問者

お礼

ご丁寧にありがとうございます。 多分、ループの部分を ------------------------------------------------ for (int i = 1; i < 101; ++i) { ++i; fact *= i; ++i; fact *= i; x *= xx; sin += x / fact; } ------------------------------------------------ とでもするんでしょうかね。

関連するQ&A