Я хочу сделать программу для вывода этой последовательности чисел: (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 и далее. Будет ли он работать, если я устанавливаю переменную счетчика и непрерывно обходит второй оператор возврата?
Хорошо видя, как вы хотите, чтобы он был рекурсивным, пусть делает его рекурсивным!
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
return ((2 * num(n-1))+1);
n
там такreturn ((2 * 2) +1);
должен бытьreturn ((2 * num(n-1))+1);