毛毛上班 递推
题目描述
毛毛经过千辛万苦终于应聘成功,在一家软件公司工作,不过由于他租住的房子比较远,而且他的电动车又比较老了,每骑过一段路就需要充电一次,好在充电速度比较快,他才来得及赶去上班。
在公司与租住的房子之间有M-2个充电站,他的电动车可以骑1站或2站的路程,设第1站是租住的房子,第M站是公司,而且一开始的电池是充满的,那么他共有多少种方式可以去公司?
输入
有多组测试数,每组数据包含一个整数M(2<=M<=40),表示总共站的数量。
输入样例
2
3
输出样例
1
2
代码解释
#include<stdio.h>
int charge(int n)
{
if(n==2)//n=2时只有一种情况
return 1;
else if(n==3) //n=3时有且仅有两种情况
return 2;
else if(n>3)
{
return charge(n-1)+charge(n-2);
//递推 因为倒数**第一站和倒数第二站**都可以到达最后一站,所以可以将路程进行拆分递推
}
}
int main()
{
int m;
while(scanf("%d",&m)!=EOF)//满足多组测试数据
{
printf("%d\n",charge(m));
}
}
编译运行结果