Я изо всех сил пытаюсь понять эту рекурсию, используемую в примере динамического программирования. Может кто-нибудь объяснить работу этого. Цель состоит в том, чтобы найти наименьшее количество монет для стоимости.Понимание рекурсии
// F (п) = 1 + мин е (п-д) для всех denomimations d
Псевдокод:
int memo[128]; //initialized to -1
int min_coin(int n)
{
if(n < 0) return INF;
if(n == 0) return 0;
if(memo[n] != -1)
int ans = INF;
for(int i = 0; i < num_denomination; ++i)
{
ans = min(ans, min_coin(n - denominations[i]));
}
return memo[n] = ans+1; //when does this get called?
}
Некоторое '{}' отсутствует после 'if (memo [n]! = -1)'? –
Я не знаю, чтобы исправить это. Он был приведен в качестве примера здесь: http://www.ugrad.cs.ubc.ca/~cs490/sec202/notes/dp/DP%201.pdf – Neerad