文章
3
粉丝
403
获赞
3
访问
36.0k
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
fb[n] | 1 | 1 | 2 | 4 | 7 | 13 | 24 | 44 | 81 | 149 |
我们首先观察,对于给出的n,其值与对应项并没有直接一一对应的映射关系,于是我们可以从fb[n]入手找关系,
可以看出从第n=3开始,有fb[n]=fb[n-1]+fb[n-2]+fb[n-3],
这样,我们就找到了递推的关系啦,那么接下来我们就自然而然想到了用递归方式来解决,话不多说,直接上代码
#include <bits/stdc++.h>
using namespace std;
long long int fb(int i){//找出递归式子,确定输入输出
switch(i){
case 0: case 1:
return 1;
break;
case 2:
return 2;
break;
default:
return fb(i-1)+fb(i-2)+fb(i-3);
break;
}
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(n==-1) break;
printf("%lld\n",fb(n));
}
return 0;
}
登录后发布评论
递归会超时的