先写出暴力递归解法:
int f(int n)
{
if (n > 1)
{
return f(n - 1)*n;
}
else
return 1;
}
然后将其转换为 DP 方案:保存已递归过的状态,自底向上按照递推式推导出下一个状态。
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i <= 4; i++)
{
arr[i] = arr[i - 1]*i;
}
cout << arr[4] << endl;书山有路勤为径