アプリ版:「スタンプのみでお礼する」機能のリリースについて

JAVAの初心者です。色々調べているんですが、分からないことがありまして・・・。
質問させてください。

要するに、数学的に言うと、2^(2^x) を計算したいのですが、
プログラムの仕方が分かりません。

つまり、2を2乗して、また2乗して、さらに2乗する
・・・をx回繰り返す計算ですね。

よければ、お手本となるプログラムか、その方法を示すサイト等の情報など、
教えていただければ助かります。

よろしくお願いします。

尚、年末年始はお返事できないかもしれません。あしからず。

質問者からの補足コメント

  • うーん・・・

    ありがとうございます! お手本を参考にして何とかできました。

    https://ide.geeksforgeeks.org/hZZ8GJWWhr

    でも、BigDecimal にて、同じようにpowを扱うには???という点でまたつまずきまして・・・。

    BigDecimal の場合はどうなるのでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/12/26 16:35
  • HAPPY

    No.5の方の例を参考にして、ようやくできました。
    回答してくださった皆さん、ありがとうございました!!

    https://ide.geeksforgeeks.org/NFFSJO2xBp

      補足日時:2019/12/27 12:54

A 回答 (6件)

Math.pow を使う.

    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

具体的には、どういう風に質問欄で示したような
計算ができるのでしょうか。

Math.pow やfor文では、どうしてもできないのですが・・・。

お礼日時:2019/12/26 11:12

for文で作るのもありですね。



【Java入門】一目でわかる!Math.pow関数で累乗(べき乗)する方法
https://www.sejuku.net/blog/52200

Javaの累乗計算の方法を現役エンジニアが解説【初心者向け】
https://techacademy.jp/magazine/22817

べき乗の高速化
https://qiita.com/shinido/items/613fd0dd62007bc2 …
    • good
    • 1
この回答へのお礼

情報ありがとうございます。

資料にはなかったのですが、具体的には、
どういう風に質問欄で示したような計算ができるのでしょうか。
(No.3の方へのお礼も参照のこと)。

Math.pow やfor文では、どうしてもできないのですが・・・。

お礼日時:2019/12/26 11:12

2^(2^x) だと、 2の(2^x)乗 と解釈できます。


「2を2乗して、また2乗して、さらに2乗する・・・をx回繰り返す」という説明だと、 底2、高さxのテトレーション に思えます。
https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88 …
どっちなのでしょうか?

べき乗の方はMath.powもありますが、テトレーションなら ループか再帰で繰り返し計算することになります
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

テトレーションという概念があるのですね。多分、そっちの方かと思います。

例えば、2^(2^3)であれば、2の2乗(=4)を、2乗して(=16)、
それをさらに2乗した、256ということになりますね。

この、2を2乗する、というところまでは良いのですが、
その答えを再度2乗し、その答えを再々度2乗する・・・
という繰り返し方が分からずに困っています。

どうすればよいのでしょうか。

お礼日時:2019/12/26 11:08

long result = 2;


for (int i = 1; i <= x; i++) {
result = Math.pow(result, 2);
}
System.out.println(result.toString());

みたいなのでいいのでは。
コードが正しいかどうかはわかりませんが。
    • good
    • 2
この回答へのお礼

ありがとうございます! お手本を参考にして何とかできました。

https://ide.geeksforgeeks.org/hZZ8GJWWhr

でも、BigDecimal にて、同じようにpowを扱うには???という点でまたつまずきまして・・・。

お礼日時:2019/12/26 16:34

これでも行けそうです



double result = Math.pow(2, Math.pow(2, x));
    • good
    • 3
この回答へのお礼

ありがとうございます!! 

例を参考にして、ようやくできました。ありがとうございました。

https://ide.geeksforgeeks.org/NFFSJO2xBp

お礼日時:2019/12/27 12:53

具体的に何で困っているのかはさっぱりわからんが, BigDecimal を使うなら BigDecimal クラスの pow を使え

ばいい.
    • good
    • 0
この回答へのお礼

下の方の例を参考にして、ようやくできました。ありがとうございました!

https://ide.geeksforgeeks.org/NFFSJO2xBp

お礼日時:2019/12/27 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!