public static int product(int n1, int n2)
{
int result = 0 ;
if (n2 > 0)
{
result = result + n1 ;
product(n1,n2-1) ;
}
return result ;
}
В этом коде вы делаете result = 0 каждый раз, когда вызываете метод, что вы явно не хотите делать. Скорее, вы должны сначала инициализировать его в основном коде, а затем передать, как это
public static int product(int n1, int n2, int result)
Тогда, когда вы делаете рекурсию, просто передавайте результат каждый раз!
Вот так:
product(n1, n2-1, result);
Ваш главный должен выглядеть так:
public static void main(String[] args)
{
int num1 = 10;
int num2 = 4;
int result = 0;
int res = product(num1, num2, result);
System.out.println(res);
}
Что это сделает, так это сделает значение результата доступным для вашей функции, инициализировано.
Edit:
При выполнении рекурсии мы должны помнить, чтобы установить то, что мы хотим вернуть в функцию, которую мы вызываем, а не просто снова вызывать функцию, в противном случае будет возвращен первоначальный ответ (в этом случае значение n1). 1017 *
Сделай так:
public static int product(int n1, int n2, int result)
{
if (n2 > 0)
{
result = result + n1 ;
result = product(n1,n2-1, result) ;
}
return result ;
}
}