地图上有m个城市,序号依次为1,2,3....m,刚开始你在1,若每次只能从当前城市去往当前序号加1或者加3的城市,要到达m城市(m>3),有多少种走法
要想到达m,则前一个应该是m - 1或者m -3;因此可以利用递归的思想,具体实现的源码如下
#include <iostream>using namespace std;int step(int m)
{if (m == 1)return 1;else if (m < 0)return 0;return step(m-1) + step(m-3);
}int main()
{for (int i = 0; i < 10; i++)cout << i << ": " << step(i) << endl;return 0;
}