已知斐波那契数列第n项的计算公式如下。在计算时有两种算法:递归和非递归,通过输出数列前40项,体会两种方法的差异。
当n=0时,Fib(n)=0;当n=1时,Fib(n)=1;当n>1时,Fib(n)= Fib(n-1)+ Fib(n-2).
试过了,很多语法错误啊,能帮忙再改改吗?
你用的什么编译器 我用VC++6.0完全正常 我给你贴图
循环版 
========================================= 
#include    <stdio.h> 
int    main() 
{ 
        unsigned    int    a[40]    =    {0,    1}; 
        printf    ("%d\n%d\n",    a[0],    a[1]); 
        for    (    int    i    =    2;    i    <    40;    ++i) 
        { 
                a[i]    =    a[i-1]    +    a[i-2]; 
                printf    ("%d\n",    a[i]); 
        } 
        return    0; 
} 
=========================================== 
递归版 
=========================================== 
#include    <stdio.h> 
int    fb    (int    i) 
{ 
        if    (    i    <    2    ) 
                return    i    ==    0    ?    0    :    1; 
        return    fb    (i    -    1)    +    fb    (i    -    2); 
} 
int    main() 
{ 
        for    (    int    i    =    0;    i    <    40;    ++i) 
                printf    ("%d\n",    fb    (i)); 
        return    0; 
} 
非递归
#include<stdio.h>递归
#include<stdio.h>递归法:
#include<stdio.h>非递归法:
#include<stdio.h>递归可以使程序看起来比较简洁,但缺点是效率比较低,并且可能导致栈溢出,因此需要灵活使用递归。