当前位置: 首页 > 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);
}

http://www.dtcms.com/a/96325.html

相关文章:

  • 修改菜品-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 硬盘扩展
  • PHP弱类型全面复盘
  • Java 大视界 -- 基于 Java 的大数据隐私计算在医疗影像数据共享中的实践探索(158)
  • 【MinIO】Bucket的生命周期管理
  • python多态、静态方法和类方法
  • Open webui的使用
  • Docker Compose 启动jar包项目
  • dubbo http流量接入dubbo后端服务
  • GRS认证是什么?GRS认证有什么意义?对企业发展的好处
  • 剑指Offer49 -- DP_贪心
  • 高中数学联赛模拟试题第9套几何题