BASICではa^bのように、べき乗の計算をすることができますが、ここでは「^」を使わずにべき乗 の計算をするプログラムを作ってみましょう。
[プログラム1]
10 INPUT PROMPT "a,b=":A;B 20 LET ANS=1 30 FOR I=1 TO B 40 LET ANS=ANS*A 50 NEXT I 60 PRINT "a^b=";ANS 70 END
[解説]
プログラム1はaをb回かけることによっての値を求めています。しかし、あなたはそのように計算をするでしょうか?たとえば、を次のように計算しますか?
まずやらないと思います。おそらく、なんらかの工夫をして計算をするのではないでしょうか?
・・・工夫1
・・・工夫2
[設問]
工夫2のアルゴリズムを記述すると以下のようになります。このアルゴリズムでべき乗を計算するプログラム2を書きなさい。
[アルゴリズム]
- ANS ← 1
- bが正である限り
- もしbが奇数ならANS ← ANS×a
- b ← INT( b / 2 )
- a ← a×a
- ANSを出力する。