Fibonacci数列(Fibonacci sequence),又称黄金分割数列。
它的定义是:第0项为0,第1项为1,从第2项开始,每一项都等于前面两项之和。即:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2) (n>=2)
#include <stdio.h>
int fibonacci( int n )
{
int result;
if ( n == 0 ) {
result = 0;//第0项为0
} else if ( n == 1 ) {
result = 1;//第1项为1
} else {
result = fibonacci( n-1 ) + fibonacci( n-2 );
}
return result;
}
int main ( int argc, char **argv )
{
int n;
scanf("%d", &n);
printf("Fibonacci数列的第%d项为:%d", n, fibonacci(n));
return 0;
}
需要注意的是,递归函数的嵌套次数受到函数调用堆栈的限制,如果递归次数太多,可能会导致栈溢出(stack overflow)。因此,在使用递归函数计算 Fibonacci 数列时,必须保证n的值不会太大,以避免使用过多的栈空间。
如果要计算比较大的 Fibonacci 数列的值,优先考虑迭代实现等非递归方案。