首页 > 其他分享 >基于C语言用递归思想实现斐波那契数列的函数设计

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

时间:2024-04-08 09:03:43浏览次数:26  
标签:递归 int Fibon C语言 斐波 那契 ptr

用C语言并利用递归思想实现设计一个程序,完成斐波那契数列的函数设计,利用递归实现!

/*******************************************************************
 *
 *	file name:	
 *	author	 :  [email protected]
 *	date	 :  2024/04/07
 *	function :  利用递归思想实现设计一个程序,完成斐波那契数列的函数设计,利用递归实现!
 * 	note	 :  None
 *
 *	CopyRight (c)  2023-2024   [email protected]   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	 :  [email protected]
 *	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
*/

标签:递归,int,Fibon,C语言,斐波,那契,ptr
From: https://www.cnblogs.com/zqingyang/p/18120314

相关文章

  • 用C语言实现,找出一个整数数组中,第二大的数
    用C语言实现,找出一个整数数组中,第二大的数/********************************************************************* filename: * author :[email protected]* date :2024/04/07* function:找出一个整数数组中,第二大的数* note :None** Copy......
  • c语言的数组以及简单函数
    数组与函数的基本定义数组正常数组数组的四要素数组名:本质上就是一个标识符常量元素:同一个数组中的元素数据类型要相同下标:数组的索引可以通过下标查找数组里的某一个值从0开始数组的长:表示元素的数量数组的定义先指定元素类型与个数,后在进行赋值(初始化)intarr[7];......
  • C语言——动态内存分配
    在学习动态开辟内存之前,我们已经掌握了两种内存分配的方法:inta=10;intarr[10]={0};这两种开辟空间方法的特点:1.开辟空间的大小是固定的2.数组在申明时,必须指定数组的长度,它所需要的内存在编译时分配但有时,我们需要的内存大小在程序运行时才能知道,上述的两种方法......
  • C语言06-数组、函数
    第10章数组10.1数组的概念①数组四要素(1)数组名:本质上是一个标识符常量,命名需要符合标识符规范。(2)元素:同一个数组中的元素必须是相同的数据类型。(3)下标(索引、角标):从0开始的连续数字。(4)数组的长度:表示元素的个数。②C语言数组特点(不用记)(1)创建数组时会在内存中开辟......
  • 【C语言】文件操作(打开,关闭,写入,读取,指针位置)
    文件操作的函数在标准库stdio.h中。#include<stdio.h>1、fopen,fclose 打开文件,关闭文件fopen:打开文件。fclose:关闭文件。补充:perror:输出errno对应的错误信息。fopen:  FILE *fopen(constchar*filename,constchar*mode)参数:filename是字符串(要打开的文......
  • 【C语言】内存分区
    【C语言】内存分区文章目录【C语言】内存分区一、数据类型数据类型概念typedefvoid数据类型sizeof操作符总结二、变量变量的概念变量的修改方式三、程序内存分区模型内存分区栈区堆区全局/静态区常量区四、函数调用模型宏函数函数调用流程调用惯例函数变量传递分析......
  • 【C语言】贪吃蛇
    【C语言】贪吃蛇文章目录【C语言】贪吃蛇前言模块描述效果展示完整代码代码拆分定义蛇对象定义食物对象初始化蛇对象食物的初始化修改控制台光标位置画蛇和食物蛇移动控制基础知识游戏控制逻辑实现,接收键盘输入蛇的移动控制画墙设置光标不可见加速和显示成绩总结前......
  • 每日一题:C语言经典例题之小球蹦蹦跳跳
    题目描述调皮的小明将皮球从100m的高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第N次落地时,共经过了多少米,第N次反弹多高。输入一个正整数N,表示球落地的次数。输出 length=球第N次落地时所经过了距离high=球第N次落地反弹的高度小数点后保留4位......
  • C语言文件操作
    本篇文章从文件是什么,为什么使用文件,到怎么使用文件来介绍文件。一.文件是什么?磁盘(硬盘)上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。1.文件名文件名包含3部分:文件路径+文件名主干+文件按后缀。2.程序文件程序......
  • C语言游戏实战(11):贪吃蛇大作战(多人对战)
         成果展示:贪吃蛇(多人对战) 前言:这款贪吃蛇大作战是一款多人游戏,玩家需要控制一条蛇在地图上移动,吞噬其他蛇或者食物来增大自己的蛇身长度和宽度。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。在开始编写代码之前,我们需要先......