Fibonacci数列的第n项-递归和循环实现
今天在Linux C编程一站式学习中做了一个练习题,体会递归和循环的异曲同工之妙。
Fibonacci数列是这样定义的:
fib(0)=1
fib(1)=1
...
fib(n)=fib(n-1)+fib(n-2)
C语言递归实现:
int fib(int n)
{
if(n == 0 || n == 1)
{
return 1;
}
else
{
return (fib(n - 1) + fib(n - 2));
}
}
C语言循环实现:
int fib(int n)
{
int a = 1, b = 1, num = 2, tmp;
if(n == 0 || n == 1)
{
return 1;
}
while(num <= n)
{
tmp = a;
a = b;
b = tmp + b;
num++;
}
return b;
}
由于int这个类型本身的大小限制,测试值n不要大于45,否则会越界。
posted on 2013-09-10 10:56 laihaiteng 阅读(488) 评论(0) 编辑 收藏 举报