基于C语言用递归思想实现斐波那契数列的函数设计

用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
*/
posted @ 2024-04-08 08:35  舟清颺  阅读(41)  评论(1编辑  收藏  举报