【基本情報】多項式のプログラム問題をわかりやすく解説|ret ← a[1] の意味とは?

IT基礎
ハク
ハク

プログラムの勉強してるんだけど最初のret ← a[1]がよくわからない……

レイ
レイ

それも踏まえて多項式のプログラムを知っていきましょう。

「ret ← a[1] が意味不明…!」

アルゴリズム問題でよく出てくる、

  • 配列
  • for文
  • 途中結果の更新

これが一気に出てくると、急に難しく感じますよね💦

「ret ← a[1] って何してるの?」

を初心者向けにわかりやすく解説します!


今回の問題

次のような式を計算するプログラムです。a1xn+a2xn1++anx+an+1a_1x^n + a_2x^{n-1} + \cdots + a_nx + a_{n+1}

ただし、解説ではわかりやすくするために、4x2+2x+74x^2 + 2x + 7

を例に使います!


配列にすると?

式:4x2+2x+74x^2 + 2x + 74x2+2x+7

の数字を順番に配列へ入れます。

要素番号中身
data[1]4
data[2]2
data[3]7

プログラム

result ← data[1]

for (i を 1 から 2 まで繰り返す)
result ← (result × x) + data[i+1]
endfor

まず「data[1]」って何?

ハク
ハク

data[1] がもうわからない…!

レイ
レイ

配列は“数字を並べた箱”なんです。


配列のイメージ

data[1] = 4
data[2] = 2
data[3] = 7

つまり、

data[1]

は、

4

のこと!


だから

result ← data[1]

は、

result ← 4

という意味になります!


resultって何?

ハク
ハク

resultって何を入れてるの?

レイ
レイ

途中まで計算した答えです。


イメージ

result = 今まで計算した値

を保存している感じ!


実際に計算してみよう!

今回は:4x2+2x+74x^2 + 2x + 74x2+2x+7

x=3 とします。


最初

result = 4

1回目

4x+2

result = (4 × 3) + 2

result = 14

2回目

4x2+2x+7

result = (14 × 3) + 7

result = 49

本当に合ってる?

普通に計算すると:

4×32+2×3+7

=36+6+7

=49

ちゃんと一致しました!

この計算方法のポイント

レイ
レイ

毎回やってることは同じなんです。

やっていること

前の結果 × x + 次の数字

これを繰り返しているだけ!

この計算方法はホーナー法といいます。


まとめ

  • data[1] は最初の数字
  • result は途中結果
  • 毎回 ×xして次を足す を繰り返している!

私は、data[1]の意味が解説を読んでもわからず悩んでいました。

ChatGPTに解説をしてもらい、理解することができました。

今回の記事はその時学習したことを元に作成しています。


コメント

タイトルとURLをコピーしました