首页 > 其他分享 >C语言学习记录---函数3

C语言学习记录---函数3

时间:2023-09-18 17:01:43浏览次数:48  
标签:return 函数 递归 int C语言 --- num print main

函数的声明与定义

头文件(.h)

#ifndef _ADD_H_  //防止头文件被多次引用,占用空间,引起浪费
#define _ADD_H_

int Add(int x,int y);//声明



#endif

函数定义(源文件.c)

int Add(int x,int y)
{
    return  x+y;
}

执行任务(源文件1.c)

#include"add.h" //引用头文件
int main()
{
    int a = 10;
    int b = 20;
    int sum = Add(a,b);
    printf("%d\n",sum);
    return 0;
}



7.1 什么是递归?

程序调用自身的编程技巧称为递归( recursion)。

递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的主要思考方式在于:把大事化小

//最简单的递归
int main()
{
    main();
    return 0;
}
//stack overflow栈溢出



void print(int n)
{
    if(n>9)
    {
        print(n/10);
    }
    printf("%d", n%10);
}

int main()
{
    unsigned int num = 0;
    scanf("%d",&num);
    print(num);
    return 0;
}

存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件


编写函数不允许创建临时变量,求字符串的长度。
int Strlen(const char*str)
{
     if(*str == '\0')
       return 0;
     else
       return 1+Strlen(str+1);
}
int main()
{
     char *p = "abcdef";
     int len = Strlen(p);
     printf("%d\n", len);
     return 0;
}

标签:return,函数,递归,int,C语言,---,num,print,main
From: https://blog.51cto.com/u_16251486/7512249

相关文章

  • 公网使用SSH远程连接安卓手机Termux - Android手机服务器
    前言使用安卓机跑东西的时候,屏幕太小,有时候操作不习惯。不过我们可以开启ssh,使用电脑PC端SSH远程连接手机termux。本次教程主要实现在安卓手机termux上安装SSH,在电脑上通过SSH远程连接Termux。同时在Termux上做内网穿透,用cpolar创建安全隧道映射22端口,实现在外也可以SSH远程连接Ter......
  • 1-03-物理层和数据链路层的基本概念
    物理层的基本概念:传输媒体大致可以被分为两类:导引型传输媒体:1)双绞线2)同轴电缆3)光纤非导引型传输媒体:1)微波通信(2~40GHz) 物理层协议的主要任务: 数据链路层概述:数据链路层在网络结构体系中所处的地位:链路,数据链路和帧的概念:计算机中的网络适配器(俗称网卡)和其相应......
  • springboot整合elasticsearch-RestHighLevelClient api查询
    1.依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.elasticsearch.client</groupId......
  • KingbaseES V8R6集群运维案例之---在线扩容节点通讯故障问题
    案例说明:KingbaseESV8R6集群节点之间通过ssh或securecmdd工具通讯,默认节点之间通过公钥和私钥方式认证,可以密码通讯;在执行集群节点扩容时,出现以下故障,节点之间仍需要输入密码进行连接:适用版本:KingbaseESV8R6一、问题分析1、测试节点securecmdd通讯如上所示:通过securec......
  • 1-02-电路交换和分层交换
    互联网的边缘与核心互联网从功能上,可以划分为以下的两大部分:(1)边缘部分由所有连接在互联网上的主机(端系统)组成这部分是用户直接使用的,用来运行各种网络应用。(2)核心部分由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和数据交换) 两......
  • 实用BAT---查看本机IP
    echooffipconfig/all>ip.txtstartip.txtExit  复制进txt,改后缀为bat   参考:bat常用命令汇总_程序员不是猿~的博客-CSDN博客......
  • 虚函数指针和虚表
    虚函数指针是一个指向指针数组(定义类对象时,编译器自动将类对象虚函数指针指向这个虚函数表)的void类型的指针(void**),虚表是一个一维数组,无论是类指针还是类引用还是实例化base1,base2它们只有一个虚函数指针和一个虚函数表,也就是说虚函数指针和虚函数表是属于类的(也就是被所......
  • 离线部署-docker
    离线部署---docker关键词:docker离线部署,images离线安装,dockercompose,shell,miniodocker离线安装dockerinstalloffline下载相应的版本的deb包,我的系统是ubuntu20.04,因此选择focal文件夹,路径:按照文档下载相应的包,挑选自己想要的版本。从部署脚本中截取安装docker的部分:#!/......
  • Oracle OCP 19c认证考试1Z0-082题库最新解析 第十四题
    14.ExaminethedescriptionoftheSATES1tableSALES2isatablewiththesamedescriptionasSALES1SomesalesdataiscontainederroneouslyinbothtablesYoumustdisplayrowsfromSALES1andSALES2andwishtoseetheduplicatestooWhichsetoperatorge......
  • KingbaseES V8R3集群运维案例之---主库数据库服务down后failover切换详解
    案例说明:对KingbaseESV8R3集群,主库数据库服务down后,failover切换进行分析,详解其执行切换的过程,本案例可用于对KingbaseESV8R3集群failover故障的分析参考。适用版本:KingbaseESV8R3集群架构:node_id|hostname|port|status|lb_weight|role|select_cnt......