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

レイ
それも踏まえて多項式のプログラムを知っていきましょう。
「ret ← a[1] が意味不明…!」
アルゴリズム問題でよく出てくる、
- 配列
- for文
- 途中結果の更新
これが一気に出てくると、急に難しく感じますよね💦
「ret ← a[1] って何してるの?」
を初心者向けにわかりやすく解説します!
今回の問題
次のような式を計算するプログラムです。
ただし、解説ではわかりやすくするために、
を例に使います!
配列にすると?
式:4x2+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+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に解説をしてもらい、理解することができました。
今回の記事はその時学習したことを元に作成しています。



コメント