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

莱莱  金牌会员 | 2024-5-16 15:22:41 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

用C语言并利用递归头脑实现设计一个程序,完成斐波那契数列的函数设计,利用递归实现!
  1. /*******************************************************************
  2. *
  3. *        file name:       
  4. *        author         :  RISE_AND_GRIND@163.com
  5. *        date         :  2024/04/07
  6. *        function :  利用递归思想实现设计一个程序,完成斐波那契数列的函数设计,利用递归实现!
  7. *         note         :  None
  8. *
  9. *        CopyRight (c)  2023-2024   RISE_AND_GRIND@163.com   All Right Reseverd
  10. *
  11. * *****************************************************************/
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. int Fibon(int n);
  15. int main(int argc, char *argv[])
  16. {
  17.     // 定义指针变量用于指向堆内存
  18.     int *ptr = NULL;
  19.     // 申请堆内存并初始化
  20.     ptr = (int *)calloc(1, 4); // 将calloc的void *转换为char*
  21.     if (NULL == ptr)
  22.     {
  23.         perror("error!");
  24.         return -1;
  25.     }
  26.     // 从键盘输入字符串
  27.     printf("请输入你要求的第几项斐波那契数列的值:\n");
  28.     scanf("%d", ptr);
  29.     // 调用递归
  30.     printf("第%d项斐波那契数列的值为:%d\n", *ptr, Fibon(*ptr));
  31.     // 释放堆内存
  32.     free(ptr);
  33.     ptr = NULL;
  34.     return 0;
  35. }
  36. /*******************************************************************
  37. *
  38. *        author         :  RISE_AND_GRIND@163.com
  39. *        date         :  2024/04/07
  40. *        function :  斐波那契数列的函数设计,利用递归实现!
  41. *         note         :  None
  42. *
  43. * *****************************************************************/
  44. int Fibon(int n)
  45. {
  46.     // 错误处理
  47.     if (1 == n || 2 == n)
  48.     {
  49.         return 1;
  50.     }
  51.     else
  52.     {
  53.         return Fibon(n - 1) + Fibon(n - 2);
  54.     }
  55. }
  56. /* 递归的本质就是二叉树的叶子的关系运算 在这里的关系是 +
  57.     Fibon(5)
  58.     =       Fibon(4)                     +             Fibon(3)
  59.     = (     Fibon(3)         + Fibon(2)) +      (Fibon(2) + Fibon(1))
  60.     = ((Fibon(2) + Fibon(1)) + Fibon(2)) +      (Fibon(2) + Fibon(1))
  61.     = ((     1   +      1)   +    1    ) +      ( 1       +     1)
  62.     =           2            +    1      +                2
  63.     = 5
  64. */
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表