fibnacci数列递归实现

发布时间 2023-11-05 14:25:38作者: 20231302邱之钊

1. 网上查询资料说明什么是fibnacci数列?

参考资料

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...
这个数列从第3项开始,每一项都等于前两项之和

斐波那契数列的定义者,是意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨。他被人称作“比萨的莱昂纳多”。1202年,他撰写了《算盘全书》(Liber Abacci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点于阿尔及利亚地区,莱昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯等地研究数学。另外斐波那契还在计算机C语言程序题中应用广泛。

2. 给出fibnacci数列的递归表达式。

fib(n)=0 当n=0时
fib(n)=1 当n=1时
fib(n)=fib(n-1)+fib(n-2) 当n>1时

3. 用C语言递归实现Fib(n)。

代码

    #include <stdio.h>

    long Fib (int n);
    int main(void)
    {
        int n;
long result;
scanf("%d",&n);
result = Fib(n);
printf("%ld\n",result);
    }
    long Fib (int n)
    {
long f;
if(n==0) f=0;
else if(n==1) f=1;
else f=Fib(n-1)+Fib(n-2);
return f;
    }

运行结果

1

2
fib(100),fib(1000),fib(10000)计算量太大,使用递归计算耗费时间过长

用GDB查看递归的堆栈情况。

1

2