汉诺塔的数字符合规律:
f(n + 1) = f(2n) +1
终止条件为n = 1 符合递归算法的思想,所以本例使用递归来实现
完整代码
#include <stdlib.h>
#include <stdio.h>
int getnum (int n)
{
if (n == 1 )
return 1;
else
return 2 * getnum(n - 1) + 1;
}
int main()
{
printf("f(1)=%d\n",getnum(1));
printf("f(2)=%d\n",getnum(2));
printf("f(3)=%d\n",getnum(3));
printf("f(4)=%d\n",getnum(4));
printf("f(5)=%d\n",getnum(5));
printf("f(6)=%d\n",getnum(6));
printf("f(9)=%d\n",getnum(9));
printf("f(10)=%d\n",getnum(10));
system ("pause");
return 0;
}
运行结果如下: