public static void Main()
int steps = findStepsByDp(7);
Console.WriteLine("Hello World DP " + steps);
Console.WriteLine("Hello World " + steps);
static int findSteps(int n)
int ret = 1 + findSteps(n - 1);
int temp = 1 + findSteps(n / 2);
int temp = 1 + findSteps(n / 3);
static int findStepsByDp(int n)
int[] dp = new int[n + 1];
for (int i = 2; i <= n; i++)
dp[i] = getMin(dp[i], 1 + dp[i / 2]);
dp[i] = getMin(dp[i], 1 + dp[i / 3]);
Console.WriteLine("i = " + i + " steps " + dp[i]);
static int getMin(int i, int j)