递归算法是不可取的。由于效率非常低,并且还有栈溢出的风险。
应该使用例如以下的迭代解法:
int Fibonacci(unsigned int n) { if(n <= 0) { return 0; } if(n == 1) { return 1; } int i = 0,j = 1,m; unsigned int k; for(k = 2; k <= n; k++) { m = i+j; i = j; j = m; } return m; }
可是对于这题来说。上面的代码还是不行的。应该返回值用long long类型:
- 题目描写叙述:
-
大家都知道斐波那契数列。如今要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义例如以下:
- 输入:
-
输入可能包括多个測试例子,对于每一个測试案例,
输入包含一个整数n(1<=n<=70)。
- 输出:
-
相应每一个測试案例。
输出第n项斐波那契数列的值。
- 例子输入:
-
3
- 例子输出:
-
2
/* 斐波那契数列 by Rowandjj 2014/7/24 */ #include<stdlib.h> #include<stdio.h> long long Fibonacci(unsigned int n) { if(n <= 0) { return 0; } if(n == 1) { return 1; } long long i = 0,j = 1,m; unsigned int k; for(k = 2; k <= n; k++) { m = i+j; i = j; j = m; } return m; } int main() { unsigned int n; while(scanf("%d",&n) != EOF) { printf("%lld ",Fibonacci(n)); } return 0; }
版权声明:本文博客原创文章,博客,未经同意,不得转载。