1 条题解
-
1
这是我的第二篇题解
上一篇是B2002
这道题有两种做法
第一种便是函数
函数要用到递归
至于递归是什么可以看这个
递归的方法便是
Fib(n) = Fib(n-1) + Fib(n-2)
基本情况是Fib(1) = 1和Fib(2) = 1。 所以可以做个特判if(n <= 2){ return 1; }
第二种便是
for
循环要先定义
int s=1;//前一项 int d=1;//前一项的前面 int ans = 0;//现在这一项(不一定要赋值)
再和上面一样搞个特判 但是
return 1;
要改成ans = 1;
判断的方法是for(int i=3;i<=n;i++){ ans = s + d; d = s; s = ans; }
这样就完成了
- 1
信息
- ID
- 4514
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 61
- 已通过
- 27
- 上传者