- ベストアンサー
基本情報午後問題について
基数a,指数nを入力し、べき乗を変数PWに求めて出力するループを用いたアルゴリズムをa,n,PWのみを使用して作りなさい。 上記の問題を考えていたのですが、変なこと(?)を考えて思考が停止してしまいました。 ループを作る際、PW=a^nという終了条件を置いてみたところ、肯定するのをはばかられるにも関わらず、否定する要素が見つからないのです。 「PWは不明数なのだから」と諭されても、PWを終了条件に使ってダメというルールはありませんし… どなたかお馬鹿な私にPW=a^nとしてはいけない理由付けをしていただけないでしょうか。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
コンピュータ言語の習い始めの第一の障害は、数学のルールをそのまま持ち込むことです。 数式が似ていても数学とは別物がコンピュータ言語です。 誰しも i=i+1 とか全然イコールじゃないし、とか理解できないでしょう。 しかしこれを数学とは別の解釈で理解していく必要があります。 PW=a^nを否定出来ないのは数学のルールで考えているからです。 コンピュータ言語のルールで考えると、完全にアウトです。 第一、その数式が使えたら繰返し演算する必要がありません。 コンピュータ言語を理解する上で必要なことは、決まっている数値を単純計算で積み上げて記憶し、その記憶した決まった数値を使って次の計算に進む、という積み上げていく形を必ず持つことです。 四則演算以外の計算は数式ではなく、関数を使用します。
その他の回答 (4)
- ok-kaneto
- ベストアンサー率39% (1798/4531)
擬似言語かと思ったら、「終了条件」ってあるので流れ図か。擬似言語なら「継続条件」だし。 どちらにせよ、「a^n」が「aのn乗」を表すとは限らないということですね。
- tsunji
- ベストアンサー率20% (196/958)
C言語だと"a xor n"という解釈になりますよ。
お礼
回答ありがとうございました。資格取得目指して勉強します。
- ok-kaneto
- ベストアンサー率39% (1798/4531)
午後ということは擬似言語だと思いますが、擬似言語で使える演算子は 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」という計算そのものが実行できないのです。
お礼
ありがとうございます。資格取得目指して勉強します。
- ok-kaneto
- ベストアンサー率39% (1798/4531)
アルゴリズムを記述するのは流れ図ですか?擬似言語ですか? まあ、どちらにせ「^」の演算子が使えません。べき乗の演算子がないので、掛け算とループで実現しなさいという問題なのだと思います。 ※使えるのであればループにする必要もありません。
お礼
ありがとうございます。資格取得目指して勉強します。
お礼
ありがとうございます。資格取得目指して勉強します。