Рекурсивная последовательность чисел

1

Я хочу сделать программу для вывода этой последовательности чисел: (2), (5), (11), (23),...
где x i= 2 * x i-1 + 1 и x 0= 2.

Вот мой код:

    public static int num(int n){
        if(n <= 0)
            return 2;
        else
            return ((2 * 2)+1);

    }

У меня возникли проблемы с поиском способа вывода чисел 11, 23 и далее. Будет ли он работать, если я устанавливаю переменную счетчика и непрерывно обходит второй оператор возврата?

  • 2
    return ((2 * num(n-1))+1);
  • 1
    проверить , что вы возвращаете, вы должны использовать n там так return ((2 * 2) +1); должен быть return ((2 * num(n-1))+1);
Показать ещё 1 комментарий
Теги:
recursion
sequence

1 ответ

2
Лучший ответ

Хорошо видя, как вы хотите, чтобы он был рекурсивным, пусть делает его рекурсивным!

public static int num(int n){
    if(n <= 0)
        return 2;
    else
        return (2 * num(n-1))+1; //Recursive call here
}

С быстрым запущенным методом проверки:

public static void main(String[] args){
    for(int i = 0; i < 10; i++){
        System.out.println("num(" + i + ")=" + num(i));
    }
}

Вывод:

num(0)=2
num(1)=5
num(2)=11
num(3)=23
num(4)=47
num(5)=95
num(6)=191
num(7)=383
num(8)=767
num(9)=1535
  • 0
    ура ! ❤️❤️❤️❤️❤️❤️ хаха спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню