先写出暴力递归算法:

int ff(int n)
                {
                	if (n >2)
                	{
                		return ff(n - 1) + ff(n - 2);
                	}
                	else
                	{
                		return 1;
                	}
                }

然后根据递归式,将其转换为 DP(动态规划),采用自底向上的方式逐步递推出下一个状态。由于 n<=2 时结果均为 1,因此将该范围内的所有状态初始化为 1:

	int *arr = new int[  60];
                	memset(arr, 0, (sizeof (int))*(60));
                
                	arr[0] = 1;
                	arr[1] = 1;
                	arr[2] = 1;
                	for (int i = 3; i <= 10; i++)
                	{
                		arr[i] = arr[i - 1] + arr[i - 2];
                	}
                	cout << arr[10];