Итак, я задал следующую проблему: У нас есть кролики, стоящие в линии, пронумерованные 1, 2, ... У нечетных кроликов (1, 3, ..) есть нормальные 2 уха. Четные кролики (2, 4, ..), мы скажем, имеем 3 уха, потому что каждый из них имеет поднятую ногу. Рекурсивно возвращаем количество «ушей» в линии 1, 2, ... n (1), (без циклов или умножения).Рекурсивные упражнения
и вот мой исходный код. Я использую Java
import java.util.Scanner;
public class BunnyEars
{
public static int CountEars(int i, int e)
{
if(i == 0)
{
return e;
}
else if(i > 0)
{
if(i%2==0)
{
e = e + 2;
i = i - 1;
CountEars(i,e);
}
else
{
e = e + 3;
i = i - 1;
CountEars(i,e);
}
}
return e;
}
public static void main(String []args)
{
Scanner scan = new Scanner(System.in);
int b;
int result;
System.out.println("Bunny Ears, even has 2 ears, odd has 3 ears");
System.out.println("Please enter a value: ");
b = scan.nextInt();
result = CountEars(b,0);
System.out.println("Number of ears are: " + result);
}
Если я вхожу 5 выход должен быть 12, но выход 3. Так что я думаю, что CountEars (я, е) метод в
enter code here
if(i%2==0)
{
e = e + 2;
i = i - 1;
CountEars(i,e);
}
else
{
e = e + 3;
i = i - 1;
CountEars(i,e);
}
не выполнения. Кажется, я не могу найти свои ошибки. Кто угодно?
Используйте отладчик + некоторые 'sysouts'. –
Вы думаете, что это не выполняется? Вы пробовали вставить System.out.println («ЗДЕСЬ!») В блок, если он действительно не выполняется? – Zavior
Вы добавляете к локальному аргументу метода 'int e'. Это уникально для каждого вызова метода. Вам нужно либо вернуть число ушей обратно к вызывающей функции, либо (как утверждают ответы) использовать независимое целое число для хранения вашего количества ушей. – GiantTree