重点在于推导出 a ( n ) = 2 a ( n − 1 ) + 1 a(n)=2a(n-1)+1 a(n)=2a(n−1)+1这个关系式,可以用当x=3、x=4时来考虑,递推得到该关系式。之后一层一层用递归方式表达,不理解递归的可以用断点debug后单步运行就明白了。
namespace ConsoleHelloWorld
{
class Program
{
static void Main(string[] args)
{
Calculator c = new Calculator();
Console.WriteLine(c.GetTowerOfHanoi(64));
}
}
class Calculator
{
public ulong GetTowerOfHanoi(int x)
{
if (x == 2)
{
return 3;
}
else
{
return 2 * GetTowerOfHanoi(x - 1) + 1;
}
}
}
}