用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现)

费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数斐波那契数列费氏数列黄金分割数列

在数学上,费波那契数列是以递归的方法来定义:

  • {\displaystyle F_{0}=0}
  • {\displaystyle F_{1}=1}
  • {\displaystyle F_{n}=F_{n-1}+F_{n-2}}(n≧2)

用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的数列A000045)

特别指出:0不是第一项,而是第零项。

 1 #include 
 2 
 3 int fib1 (int n) ;    //非递归生成下标为n的斐波那契数列元素
 4 int fib2 (int n) ;    //递归生成下标为n的斐波那契数列元素
 5 
 6 int main ()
 7 {
 8     int n ;
 9     printf ("please input the index of fib:") ;
10     scanf ("%d" , &n) ;
11     printf ("the %d fib1 number is %d \n" , n , fib1(n)) ;
12     printf ("the %d fib2 number is %d \n" , n , fib2(n)) ;
13     return 0 ;
14 }
15 
16 int fib1 (int n)
17 {
18     int i = 0 ;
19     int a = 1 ;
20     int b = 1 ;
21     int result = 0 ;
22     if (n <= 0)
23     {
24         return 0 ;
25     }
26     else if (n <= 2)
27     {
28         return 1 ;
29     }
30     else
31     {
32         for (i = 3 ; i <= n ; i ++)
33         {
34             result = a + b ;
35             a = b ;
36             b = result ;
37         }
38         return result ;
39     }
40 }
41 
42 int fib2 (int n)
43 {
44     if (n <= 0)
45     {
46         return 0 ;
47     }
48     else if (n <= 2)
49     {
50         return 1 ;    //递归终止条件
51     }
52     else
53     {
54         return fib2(n-1) + fib2(n-2) ;    //递归
55     }
56 }

 

转载于:https://www.cnblogs.com/maoguy/p/6629478.html

你可能感兴趣的:(用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现))