面试题9 斐波那契数列
2014-11-07 15:17
155 查看
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
输出:
对应每个测试案例,
输出第n项斐波那契数列的值。
样例输入:
样例输出:
解题思路:
1. 使用递归一定会超时,可以循环求出,依次求出f(0), f(1), f(2)......f(70),时间复杂度是o(n);
2. 使用long long res[2],对于f(n) = f(n-1) + (n-2),每次都用res[0]保存f(n-2), res[1]保存f(n-1)
代码如下:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
输出:
对应每个测试案例,
输出第n项斐波那契数列的值。
样例输入:
3
样例输出:
2
解题思路:
1. 使用递归一定会超时,可以循环求出,依次求出f(0), f(1), f(2)......f(70),时间复杂度是o(n);
2. 使用long long res[2],对于f(n) = f(n-1) + (n-2),每次都用res[0]保存f(n-2), res[1]保存f(n-1)
代码如下:
#include<iostream> #include<cstdio> using namespace std; long long res[2]; long long f(int n) { res[0] = 0; res[1] = 1; if(n < 2) return res ; long long ans; for(int i = 2; i <= n; i++) { ans = res[0] + res[1]; res[0] = res[1]; res[1] = ans; } return ans; } int main() { int n; while(scanf("%d",&n) != EOF) { printf("%lld\n", f(n)); } return 0; }
相关文章推荐
- 九度剑指Offer面试题9:斐波那契数列(Java题解)
- 剑指offer-面试题 9 斐波那契数列
- 剑指offer 面试题9 斐波那契数列/青蛙跳台阶/矩形覆盖/变态跳台阶
- 面试题的那些事(2)—斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 剑指offer--面试题10:斐波那契数列
- 【面试题9】斐波那契数列
- 《剑指Offer》面试题九之斐波那契数列
- P73、面试题9:斐波那契数列
- 剑指offer-chapter2-面试题9-斐波那契数列(java)
- 剑指offer 面试题9 斐波那契数列
- 剑指offer-面试题09-斐波那契数列
- 剑指offer 面试题9 斐波那契数列 java版答案
- (剑指Offer)面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 斐波那契数列 兔子表述 面试题
- 面试题9 斐波那契数列
- 剑指Offer_面试题09_斐波那契数列