Я бился головой о стену последние пару дней, пытаясь выяснить, как правильно настроить этот рекурсивный метод. Я нашел еще один пост о переполнении стека, который указал мне правильное направление, но не могу понять, как его sh завершить.
В человеческой пирамиде вес распределяется между разными людьми неравномерно в пирамиде. Например, у человека А нет веса. Если мы предположим, что каждый человек в нашей пирамиде весит 200 фунтов, тогда человек B и человек C несут половину веса человека A (100 фунтов каждый). Человек E непосредственно поддерживает половину веса человека B (100 фунтов) и половину веса человека E (100 фунтов), поэтому он поддерживает не менее 200 фунтов. Вдобавок она несет половину этого человека B и C несет, поэтому дополнительные 100 фунтов.
Полное описание программы здесь.
Это то, что у меня так far:
public int weightOn(int row, int column) {
// Base cases
if (row <= 0) {
return 0;
} else if (column < 0 || column > row) {
return 0;
}
return (200 + (weightOn(row - 1, column - 1) + weightOn(row - 1, column))) / 2;
}
Программа работает для первых 2 рядов пирамиды и всех сторонних людей, таких как: weightOn (0, 0) = 0, weightOn (1, 0) = 100, weightOn (2, 0) = 150, но когда я запускаю weightOn (2, 1), я получаю 200, когда должно быть 300, или weightOn (3, 1) возвращает 275, когда должно быть 425.