Ваша логика рекурсии неверна.
Вы получаете 14, потому что вы звоните
f (2,2) = f (2,1) + f (1,2) = (f(2,0) + f (1,1)) + (f (1,1) + f (0,2))
f (0,2) - ваш базовый случай, 3 f (0), 2) ваш базовый случай, 1 f (1,1) = f (0,1) + f (1,0) = 2 + 3 = 5
Таким образом, сумма составляет 3 + 1 + 5+ 5 = 14
Правильная логика для рекурсивного преобразования: одна рекурсивная функция:
Сумма массива 2x2, начинающаяся с координат (x, y) иокончание (z, w) представляет собой сумму из 3 вещей:
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
yyyyyyyyyN
Сумма массива, состоящего из ВСЕХ строк, кроме последней (в примере xxxx-s)выше) Так (x, y) - (z, 2-1).
Сумма массива, состоящего из строки LAST (кроме правого нижнего угла - yyyyy-s в примере)Итак, (x, w) - (z-1, w)
Число в координатах (z, w)
базовые случаи: если y> w (ноль строк), сумма равна нулю;если x
Это действительно ДВОЙНАЯ рекурсия, в идеале .Одним из них является рекурсивное вычисление суммы всех строк с помощью вспомогательной функции «добавить строку», которая, конечно, также рекурсивно реализуется.