码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-03-27 23:55:45      阅读:865      评论:0      收藏:0      [点我收藏+]

标签:can   非递归   mat   dir   lease   scanf   api   下标   wiki   

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

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

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

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

01123581321345589144233……(OEIS中的数列A000045

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

 1 #include <stdio.h>
 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 }

 

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

标签:can   非递归   mat   dir   lease   scanf   api   下标   wiki   

原文地址:http://www.cnblogs.com/maoguy/p/6629478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!