地图上有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;
}