Я пытаюсь написать рекурсивную функцию в Java, которая отображает n-элемент в последовательности математических чисел (1 3 8 18 38 78).Последовательность 1, 3, 8, 18, 38, 78 из рекурсивной функции
Это то, что мне удалось сделать до сих пор:
public static int recfunc(int i) {
if(i==1) { return 1; }
if(i==2) { return 2+recfunc(i-1); }
if(i==3) { return 5+recfunc(i-1); }
if(i>3) { return ((2^(i-3))*5)+recfunc(3); }
return 0;
}
Для расчета п (> 3), вы просто добавить вместе 2^(я-3) от каждого шага (я> 3) а затем добавить 8 в конце. Итак, для 6-го элемента вам нужно будет выполнить этот расчет: 40 + 20 + 10 + 8 = 78.
Проблема с приведенным выше кодом заключается в том, что он успешно вычисляет увеличение числа между двумя n (s), а затем объявления 5 + 2 + 1 (8), но не применяются все предыдущие шаги (20 + 10).
Update:
Я получаю где-то, но это еще не делает то, что должен.
public static int recfunc(int i, boolean param) {
if(param==false) {
if(i==1) { return 1; }
if(i==2) { return 2+recfunc(i-1, false); }
if(i==3) { return 5+recfunc(i-1, false); }
if(i>3) { param = true; }
}
if(param==true) {
if(i==4) {
return ((2^(i-3))*5)+recfunc(i-1, false); }
else {
return ((2^(i-3))*5)+recfunc(i-1, true); }
}
return 0;
}