[ajuda] Math.pow - Pontência

Olá pessoal estou começando agora a estudar o java.

E foi pedido o seguinte exercicio:

Desenvolva um algoritmo que calcule o número de grãos de trigo dispostos num tabuleiro de xadres e que siga a seguinte regra: no primeiro quadro, clocar um grão de trigo; no segundo quadro, colocar o dobro de grãos de trigo doprimeiro quadro; e, para todos os quadors subsequentes, colocar o dobro de grãos de trigo do quadro anterior. Um tabuleiro de xadrez tem 64 quadros. O algoritmo deve usar recursão e modularização.

import javax.swing.*;

class exercicio10recursao
 {

   static double xadrez (int n)
    {
      if (n == 63)
       {
         return (Math.pow(2,n));
       }
      else
       {
         return (Math.pow(2,n) + xadrez(n+1));
       }
    }

   public static void main (String x[])
    {
      double graos;

       graos = xadrez (0);
       JOptionPane.showMessageDialog(null, "total de graos é : " + graos);
       System.exit(0);
    }
 }

Mas a minha pergunta seria a seguinte:
Teria alguma outra maneira de se fazer isso sem usar Math.pow? E mantendo o recursão e modularização?

[size=“11”]
[color=“red”]

  • Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:

Oi,

public static long xadrez(int n) { if (n == 63) return 2; else return 2 * xadrez(n + 1); }

Troquei o double por long. Apesar de os dois terem 8 bytes, faz mais sentido usar long, pois o número será inteiro.

Se o número final der negativo, o resultado não coube em 8 bytes.