Rekurencja. Jak dokończyć to zadanie.

0

Witam,
Zadanie wydaje się banalnie proste. Jeśli liczę je na kartce.
a1 = 1;
an = 2a(n-1)+1 dla n >=2;
Wzór: an = 2^n - 1
I problem mam taki, że nie wiem, jak włączyć do kodu rekurencji to -1 w związku z czym kod poniżej wyświetla mi tylko potęgi 2, czyli an = 2^n.

package rekurencja;

public class Rekurencja {

    public static void main(String[] args) {

        Rekurencja rek = new Rekurencja();
        int n = 4;
        System.out.println(rek.mRek(n));

    }

   public int mRek(int n){
       if(n > 0){
           return 2 * mRek(n - 1);
       } 
       else
       return 1;
   }
}

Edit. Bo to chyba nie wypada robić czegoś takiego, jak ma być rekurencja:System.out.println(rek.mRek(n) - 1);?

1

Prozaicznie, Możesz dodać to + 1 do kodu funkcji (chyba, że czegoś nie zauważam):

class Main {

  public static int simpleRec(int n) {
    if (n == 1) return 1;
    else
      return 2 * simpleRec(n - 1) + 1;
  }

  public static void main(String[] args) {
    System.out.println(simpleRec(3)); // -> 7
    System.out.println(simpleRec(5)); // -> 31
  }
}
1
public class Rekurencja {

        public int mRek(int n){
            if(n > 0){
                return 2 * mRek(n - 1) + 1;
            }
            else
                return 0;
        }
    }
0

Dzięki za pomoc, problem rozwiązany. Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0