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


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

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

    • {displaystyle F_{0}=0}F_{0}=0
    • {displaystyle F_{1}=1}F_{1}=1
    • {displaystyle F_{n}=F_{n-1}+F_{n-2}}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 , fib1(n)) ;
    12     printf ("the %d fib2 number is %d 
    " , 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 }
  • 相关阅读:
    Executors 构建线程池
    结构型模式——Bridge(未完成)
    结构型模式——Adapter
    创建型模式——Builder
    创建型模式——Abstract Factory
    Java与线程
    Java内存模型
    类加载
    Class类文件的结构
    垃圾收集器
  • 原文地址:https://www.cnblogs.com/maoguy/p/6629478.html
Copyright © 2020-2023  润新知