Я хотел бы узнать, почему, когда я изменяю n - 1 на --n, функция выдает исключение. Насколько я понимаю, --n и n - 1 дают одинаковый результат. Смотрите Печать (). Пожалуйста помоги. Спасибо.
private static void Print(int n)
{
if (n == 0) return;
Console.Write($"[{n}] -> ");
// regardless of --n or n--, the results are the same.
Print(n - 1);
}
private static double KnapSack(int maxWeight, Product[] products)
{
double maxValue = KnapSack(maxWeight, products, products.Length);
Console.WriteLine($"The max value the knapsack can hold is: {maxValue:C2}");
return maxValue;
}
private static double KnapSack(int maxWeight, Product[] products, int n)
{
if (n == 0 || maxWeight == 0)
return 0;
if (products[n - 1].Weight > maxWeight)
return KnapSack(maxWeight, products, n - 1);
else return Max
(
// if we change n - 1 to --n, it will throw an exception.
products[n - 1].Price + KnapSack(maxWeight - products[n - 1].Weight, products, n - 1),
KnapSack(maxWeight, products, n - 1)
);
}