基於C語言用遞迴思想實現斐波那契數列的函式設計

舟清颺發表於2024-04-08

用C語言並利用遞迴思想實現設計一個程式,完成斐波那契數列的函式設計,利用遞迴實現!

/*******************************************************************
 *
 *	file name:	
 *	author	 :  RISE_AND_GRIND@163.com
 *	date	 :  2024/04/07
 *	function :  利用遞迴思想實現設計一個程式,完成斐波那契數列的函式設計,利用遞迴實現!
 * 	note	 :  None
 *
 *	CopyRight (c)  2023-2024   RISE_AND_GRIND@163.com   All Right Reseverd
 *
 * *****************************************************************/
#include <stdio.h>
#include <stdlib.h>

int Fibon(int n);

int main(int argc, char *argv[])
{
    // 定義指標變數用於指向堆記憶體
    int *ptr = NULL;
    // 申請堆記憶體並初始化
    ptr = (int *)calloc(1, 4); // 將calloc的void *轉換為char*
    if (NULL == ptr)
    {
        perror("error!");
        return -1;
    }

    // 從鍵盤輸入字串
    printf("請輸入你要求的第幾項斐波那契數列的值:\n");
    scanf("%d", ptr);
    // 呼叫遞迴
    printf("第%d項斐波那契數列的值為:%d\n", *ptr, Fibon(*ptr));
    // 釋放堆記憶體
    free(ptr);
    ptr = NULL;
    return 0;
}

/*******************************************************************
 *
 *	author	 :  RISE_AND_GRIND@163.com
 *	date	 :  2024/04/07
 *	function :  斐波那契數列的函式設計,利用遞迴實現!
 * 	note	 :  None
 *
 * *****************************************************************/
int Fibon(int n)
{
    // 錯誤處理
    if (1 == n || 2 == n)
    {
        return 1;
    }
    else
    {
        return Fibon(n - 1) + Fibon(n - 2);
    }
}
/* 遞迴的本質就是二叉樹的葉子的關係運算 在這裡的關係是 +
    Fibon(5)
    =       Fibon(4)                     +             Fibon(3)
    = (     Fibon(3)         + Fibon(2)) +      (Fibon(2) + Fibon(1))
    = ((Fibon(2) + Fibon(1)) + Fibon(2)) +      (Fibon(2) + Fibon(1))
    = ((     1   +      1)   +    1    ) +      ( 1       +     1)
    =           2            +    1      +                2
    = 5
*/

相關文章