当前位置: 首页 > news >正文

从头开始学C语言第三十五天——指针函数、递归函数

指针函数

是指函数返回值为地址值的函数

定义:
<数据类型> *<函数名称> (<参数说明>)

{

        语句序列;

}

指针函数的返回值:全局变量的地址/static变量的地址/字符串常量的地址

用指针函数删除字符串中的空格

char *del(char *x);

int main()
{
    char a[]="he ll o";

    char *pa;

    printf("%s\n",a);
    pa = del(a);
    printf("%s\n",pa);

    return 0;
}

char *del(char x[])
{
    char *px = x;
    char *s =x;

    while(*x != '\0')
    {
        if(*x != ' ')
        {
            *px = *x;
            px++;
            x++;
        }
        else
        {
            x++;
        }
    }
    *px = '\0';

    return s;
}

指针函数替代strcat函数

#include <stdio.h>

char *link(char a[],char b[]);

int main()
{
    char tar[20]="hello";//注意容量问题
    char m[]="world";
    char *p;

    puts(tar);
    p = link(tar,m);
    puts(p);

    return 0;
}

char *link(char a[],char b[])
{
    char *pa = a;
    char *pb = b;
    char *s = a;

    while(*pa != '\0')
    {
        pa++;
    }

    while(*pb != '\0')
    {
        *pa = *pb;
        pa++;
        pb++;
    }

    *pa = '\0';

    return  s;
}

递归函数

指一个函数直接或间接调用函数本身

递归函数调用执行过程分为两个阶段

递推阶段:从原问题出发,按照递归公式递推从未知到已知,最终到达递归终止条件

回归阶段:按递归终止条件求出结果,并逐步带入递归公式,回归到原问题求解

例题:计算N的阶乘

以计算5的阶乘为例,从编程逻辑结合递归函数概念可以列出下表

5!=5*(5-1)!
4!=4*(4-1)!
3!=3*(3-1)!
2!=2*(2-1)!
1!=1

所以递归函数的终止条件就是当N=1时,这个就是递推阶段所求目标

已知N=1是终止条件,我们就可以把N带回到递推公式中,最终求得N的阶乘

#include <stdio.h>

int level(int a);

int main()
{
    int n;
    int lev;

    scanf("%d",&n);

    lev=level(n);

    printf("%d",lev);

    return 0;
}


int level(int a)
{
    if(a==0 || a==1)
    {
        return 1;
    }
    else
        return a*level(a-1);
}

相关文章:

  • 修改菜品-02.代码开发
  • Copilot完全指南:AI编程助手的革命性实践
  • WEB或移动端常用交互元素及组件 | Axure / 元件类型介绍(表单元件、菜单和表格 、流程元件、标记元件)
  • 口腔种植全流程AI导航系统及辅助诊疗与耗材智能化编程分析
  • TDengine 中的命名与边界
  • Go 语言标准库中time模块详细功能介绍与示例
  • 自动化发布工具CI/CD实践Jenkins部署与配置教程
  • 网络空间安全(43)Linux实战篇
  • 深度解析衡石科技HENGSHI SENSE嵌入式分析能力:如何实现3天快速集成
  • vue状态管理器pinia、pinia-plugin-persist持久化储存
  • 鸿蒙Next-集成HmRouter的路由模式
  • Vala编程语言教程-属性
  • 鸿蒙OS 5.0 服务能力框架深入剖析
  • 手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说
  • 《第三次世界大战》第一章:战争的前夜
  • Java StringUtils工具类常用方法详解
  • COMPASS:通过残差强化学习和技能合成实现跨具身移动策略
  • 深入解剖Linux进程:从诞生到调度的核心机制
  • 2.1-WAF\CDN\OSS\反向代理\负载均衡
  • linux 硬盘扩展
  • 杭州学校网站建设/惠州企业网站seo
  • 灵宝超市建设管理局信访网站/百度极速版
  • 营销做网站公司/软文营销的概念
  • 宁波方太集团网站建设/关键词的分类和优化
  • 湖南张家界建设厅网站/站内推广方式有哪些
  • 衣服网站建设方案/最新黑帽seo培训