Самое важное, что вам нужно определить для рекурсивной функции, - это когда ее завершать.
Вторым важным моментом, который следует учитывать, является то, что возвращать, когда вы завершаете его. Когда вы начинаете добавлять числа, вы начинаете с sum = 0
. Из рекурсивной функции, которая должна вычислять сумму чисел, одно и то же значение (т. Е. 0
) может быть возвращено при его завершении. Аналогично, из рекурсивной функции, которая должна возвращать произведение чисел, вы можете вернуть 1
при завершении.
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<Integer>();
stack.add(2);
stack.add(3);
stack.add(4);
stack.add(5);
System.out.println(sum_sqr_rec(stack));
}
static int sum_sqr_rec(Stack<Integer> stk) {
if (stk.isEmpty()) {
return 0;
}
int n = stk.pop();
return n * n + sum_sqr_rec(stk);
}
}
Вывод:
54