首页 > 其他分享 >【c语言】函数递归的一些例题1.编写一个函数,不许创建临时变量,求字符串长度 2.求n的阶乘 3.求第n个斐波那契数

【c语言】函数递归的一些例题1.编写一个函数,不许创建临时变量,求字符串长度 2.求n的阶乘 3.求第n个斐波那契数

时间:2024-07-16 19:54:32浏览次数:13  
标签:契数 return 函数 递归 int Fib printf 阶乘 例题

1.

int my_strlen(char* str)
{
    if (*str != '\0')
    {
        return 1 + my_strlen(str + 1);

//利用递归求字符串长度:递归一次就是多一个字符这样就可以求出字符串的长度了
    }
    else
        return 0;
}
int main()
{
    //编写一个函数,不许创建临时变量,求字符串长度
    char arr[] = "hello";
    printf("%d\n", my_strlen(arr));
    return 0;
}

2.

int Fac(int n)
{
    if (n <= 1)
    {
        return 1;

//当n为一或者小于1时直接返回1就可以了
    }
    else
    {
        return n * Fac(n - 1);

//当n比1打是,将进入函数的递归,就跟数学公式一样n*(n-1)
    }
}
int main()
{
    //用递归的方法,求n的阶乘。
    int n = 0;
    scanf("%d", &n);
    int ret=Fac(n);
    printf("%d", ret);
    return 0;
}

3

方法一:

int Fib(int n)
{
    if (n <= 2)
    {
        return 1;

//当n小于2时,直接返回1;因为斐波那契数的前两位都是1
    }
    else
    {
        return Fib(n - 1) + Fib(n - 2);

//当n大于2时就可以利用递归求利用前两位的和求出下一位
    }
}
int main()
{
    //求n个斐波那契数1 1 2 3 5 8 13 21 34 55.....
    int n = 0;
    scanf("%d", &n);
    printf("%d", Fib(n));
    return 0;

}

方法二:

int Fib(int n)
{
    int a = 1;
    int b = 1;
    int c = 1;
    while (n > 2)
    {

//利用循环来求斐波那契数,因为要用递归求比较大的斐波那契数的时候会产生栈溢出的显像所以要利用循环来求
        c = a + b;
        a = b;
        b = c;
        n--;
     }
    return c;
}
int main()
{
    //求n个斐波那契数1 1 2 3 5 8 13 21 34 55.....
    int n = 0;
    scanf("%d", &n);
    int ret = Fib(n);
    printf("%d",ret);
    return 0;

}

标签:契数,return,函数,递归,int,Fib,printf,阶乘,例题
From: https://blog.csdn.net/m0_68801993/article/details/140474616

相关文章

  • 第十一章Python 函数
    定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函......
  • 数电_逻辑函数基础
    一逻辑函数的两种标准形式1最小项min变量之积,n个变量对应2的n次方个最小项性质输入变量的任何取值下必有一个最小项,而且仅有一个最小项值为1。全体最小项或为1。任意2个最小项相与为0。具有相邻性的两个最小项相或可以消去一对因子合并为一项。2最大项Min变量之和,n......
  • Python Part6 函数
    1.参数传递位置参数关键字参数若同时有位置参数和关键字参数,则位置参数在前,否则报错默认值参数:defhappy_birthday(name='小李',age=10):print('祝'+name+'生日快乐!')print(str(age)+'岁生日快乐!')happy_birthday()happy_birthday('小王')happy_birthday(......
  • yolov5 损失函数代码详解
    前言模型的损失计算包括3个方面,分别是:定位损失分类损失置信度损失损失的计算公式如下:损失计算的代码流程也是按照这三大块来计算的。本篇主要讲解yolov5中损失计算的实现,包括损失的逻辑实现,张量操作的细节等。准备工作初始化损失张量的值,获取正样本的信息。lcls=to......
  • C++(函数参数为数组与指针算术)
    目录1.函数参数为数组2.指针算术2.1arr是指向第一个元素的地址2.2arr[i]表示什么?#include<iostream>voidprintArray(intarr[],intsize){for(inti=0;i<size;++i){std::cout<<arr[i]<<"";}}intmain(){intarr[5]......
  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
       通过结合具体的数学问题,引导高中生深入分析问题,有效地构建求解问题的数学模型,可以使学生逐步掌握数学问题求解的基本思路以及模型建构的方法与注意事项。但是离开了反复训练,无法从根本上提升高中生的数学建模能力。因此,在平时的高中数学教学中,教师要注意结合数学教学的内......
  • UE MultiLineTraceByChannel函数返回只有一个对象的问题
    问题描述MultiLineTraceByChannel,看函数名字是返回射线检测到的所有对象,实际使用过程中,发现返回的数组中只又一个对象。MultiLineTracebyChannel可以看下官方的文档解释:此指南说明如何使用MultiLineTracebyChannel蓝图节点返回在Visilibity通道上响应的所有Acto......
  • 模板——类模板1--与函数的关系
    1.类模板基本语法template<classT,classT2>类template<classNameType,classAgeType>classPerson{public: Person(NameTypename,AgeTypeage) { this->m_name=name; this->m_age=age; } voidShowPerson() { cout<<"姓名:&quo......
  • mingw下 解析dll中全局函数
    ULONGsystemGetVarName(conststring&userLib){if(ofs.is_open()){ofs.close();}ofs.open("d:\\log\\symbolTable.txt",ios::out);if(!ofs.is_open()){printf"pp.txtfileopenerr\n");......
  • 虚函数表 和 虚函数指针
     虚函数指针vptr大小x86平台下为4个字节,x64平台下为8个字节例题:涉及内存对齐 答案:32位miaoage=264位miaoage=1核心在这句话上p【1】=q【1】;由于两个子类都继承自有虚函数的基类因此都带有虚表指针首先基类中只有一个int432位下,虚表指针也是4......