• ベストアンサー

基本情報午後問題について

基数a,指数nを入力し、べき乗を変数PWに求めて出力するループを用いたアルゴリズムをa,n,PWのみを使用して作りなさい。 上記の問題を考えていたのですが、変なこと(?)を考えて思考が停止してしまいました。 ループを作る際、PW=a^nという終了条件を置いてみたところ、肯定するのをはばかられるにも関わらず、否定する要素が見つからないのです。 「PWは不明数なのだから」と諭されても、PWを終了条件に使ってダメというルールはありませんし… どなたかお馬鹿な私にPW=a^nとしてはいけない理由付けをしていただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.4

コンピュータ言語の習い始めの第一の障害は、数学のルールをそのまま持ち込むことです。 数式が似ていても数学とは別物がコンピュータ言語です。 誰しも i=i+1 とか全然イコールじゃないし、とか理解できないでしょう。 しかしこれを数学とは別の解釈で理解していく必要があります。 PW=a^nを否定出来ないのは数学のルールで考えているからです。 コンピュータ言語のルールで考えると、完全にアウトです。 第一、その数式が使えたら繰返し演算する必要がありません。 コンピュータ言語を理解する上で必要なことは、決まっている数値を単純計算で積み上げて記憶し、その記憶した決まった数値を使って次の計算に進む、という積み上げていく形を必ず持つことです。 四則演算以外の計算は数式ではなく、関数を使用します。

その他の回答 (4)

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.5

擬似言語かと思ったら、「終了条件」ってあるので流れ図か。擬似言語なら「継続条件」だし。 どちらにせよ、「a^n」が「aのn乗」を表すとは限らないということですね。

Calpis28
質問者

お礼

ありがとうございます。資格取得目指して勉強します。

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.3

C言語だと"a xor n"という解釈になりますよ。

Calpis28
質問者

お礼

回答ありがとうございました。資格取得目指して勉強します。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2

午後ということは擬似言語だと思いますが、擬似言語で使える演算子は http://books.google.co.jp/books?id=ZiWcU4aTEJkC&pg=PA20&lpg=PA20&dq=%E6%93%AC%E4%BC%BC%E8%A8%80%E8%AA%9E%E3%80%80%E6%BC%94%E7%AE%97%E5%AD%90&source=bl&ots=sJ3VOBaopt&sig=_Vymuh0ugtubz0rn0AgwsHkQbek&hl=ja&sa=X&ei=6Yh3UZi9GceeiALIi4CwDQ&ved=0CEUQ6AEwAw#v=onepage&q=%E6%93%AC%E4%BC%BC%E8%A8%80%E8%AA%9E%E3%80%80%E6%BC%94%E7%AE%97%E5%AD%90&f=false の通り、べき乗の演算子はありません。なので、「a^n」という計算そのものが実行できないのです。

Calpis28
質問者

お礼

ありがとうございます。資格取得目指して勉強します。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

アルゴリズムを記述するのは流れ図ですか?擬似言語ですか? まあ、どちらにせ「^」の演算子が使えません。べき乗の演算子がないので、掛け算とループで実現しなさいという問題なのだと思います。 ※使えるのであればループにする必要もありません。

Calpis28
質問者

お礼

ありがとうございます。資格取得目指して勉強します。