C语言初阶—9函数

函数的声明

(main函数前)----告诉有一个函数

格式:  类型 函数名(参数);

函数的声明 放到头文件add.c

函数的定义

----创建函数----放到add.c

格式:类型 函数名(参数)

{

语句项;

}

在文件中包含头文件

#include "add.h"

包含头文件-实质上就拷贝头文件的声明 到文件

导入静态库

#pragma comment (lib, "add.lib")

函数的递归

例1: 输入无符号整形unsigned int数,打印每一位print 

%u 打印无符号整形数

#include<stdio.h>
void print(unsigned int n)
{
	if (n > 9)
	{
		print(n / 10);
	}
	printf("%d ", n % 10);
}

int main()
{
	unsigned int n = 0;
	scanf("%u", &n);
	print(n);

	return 0;
}

例2: 函数不允许创建临时变量,求字符串长度my_strlen

1.有临时变量

#include<stdio.h>

void my_strlen(char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	printf("%d\n", count);
}

int main()
{
	char str[] = "abcdef";
	my_strlen(&str);
	return 0;
}

2.无临时变量--递归

#include<stdio.h>

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

int main()
{
	char str[] = "abcdef";
	printf("%d\n", my_strlen(&str));
	return 0;
}

例3: 不考虑溢出, 求N的阶乘fac()

1.递归

//1.递归
#include <stdio.h>

int Fac(int n)
{
	if (n == 1)
		return 1;
	else
	{
		return n*Fac(n-1);
	}
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d\n", Fac(n));
	return 0;
}

2.迭代--循环

//非递归
#include <stdio.h>

int main()
{
	int n = 0;
	int fac = 1;
	scanf("%d", &n);
	if (n == 1)
		fac = 1;
	while (n > 1)
	{
		fac = n * fac;
		n--;
	}
	
	
	printf("%d\n", fac);
	return 0;
}

例4: 不考虑溢出, 求斐波那契数列Fib()

1.递归

//递归
#include<stdio.h>

int Fib(int n)
{
	if (n == 1 || n == 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d\n", Fib(n));
	return 0;
}

2.非递归

//2.非递归
#include <stdio.h>
int main()
{
	int a = 1;
	int b = 1;
	int fib = 1;
	int n = 0;
	scanf("%d", &n);
	if (n == 1 | n == 2)
		fib = 1;
	while (n > 2)//5
	{
		fib = a + b;
		a = b;
		b = fib;
		n--;
	}
	printf("%d\n", fib);
	return 0;
}

函数在调用过程中重复过多,使用非递归

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/524239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode.707. 设计链表

题目 题意&#xff1a; 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。 addAtHead(val)&#xff1a;在链表的第一个元素之前添加一个值为 val 的节点。插入后&#xff0c;新节点将成为链表的…

Dubbo 序列化

Dubbo 序列化 1、什么是序列化和反序列化 序列化&#xff08;serialization&#xff09;在计算机科学的资料处理中&#xff0c;是指将数据结构或对象状态转换成可取用格式&#xff08;例如存成文件&#xff0c;存于缓冲&#xff0c;或经由网络中发送&#xff09;&#xff0c;…

MySQL数据库基础--事务

事务 是一组操作的集合&#xff0c;他是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 默认MySQL的事务是自动提交的&#xff0c;也就是说&#xff0c;当执行…

《C语言深度解剖》(2):详解C语言分支语句和循环

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

Node操作mysql

配置 安装mysql模块 npm i mysql建立连接 const mysql require(mysql);const db mysql.createPool({host: 127.0.0.1,user: root,password: admin123,database: my_db_01 });测试 // select 1没有任何实质性作用 只是检查mysql模块是否正常 db.query(select 1, (err, results…

修电机所需要的基本工具

等距式 模具 同心式模具 电机划线刀 压脚 千分尺 -----测量线径 钳形电流表------- 测量 空载 满载下的电流值 摇表&#xff0c; 测量线圈是否碰到外壳 指针式万用表 胶锤 整理线圈 绝缘纸和青稞纸&#xf…

RuoYi-Vue若依框架-vue前端给对象添加字段

处理两个字段的时候有需求都要显示在下拉框的同一行&#xff0c;这里有两种解决方案&#xff0c;一是后端在实体类添加一个对象&#xff0c;加注解数据库忽略处理&#xff0c;在接口处拼接并传给前端&#xff0c;二是在前端获取的数据数组内为每个对象都添加一个字段&#xff0…

Ethernet 汇总

Ethernet系统 硬件最小系统 CPU:可以是复杂的芯片,也可以是小的单片机DMA:用于减轻CPU负担,搬运数据系统Memory<->FIFOMAC:可以集成在芯片里面,用于CPU和PHY之间的通信MII:接口用于MAC和PHY的通信,包括控制MDIO和数据DataPHY:模拟器件,最底层,数据收发源头软件…

Vue3【进阶】

简介 https://cn.vuejs.org/guide/introduction.html 创建vue3工程 【基于 vue-cli创建】 基本和vue-cli的过程类似&#xff0c;只是选择的时候用vue3创建 【基于vite创建】【推荐】 【官网】https://vitejs.cn/ 【可以先去学一下webpack】 步骤 【https://cn.vitejs.…

PostgreSQL入门到实战-第三弹

PostgreSQL入门到实战 PostgreSQL安装之linux官网地址PostgreSQL概述linux安装PostgreSQL更新计划 PostgreSQL安装之linux 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概述 Postg…

【全套源码教程】基于SpringBoot+MyBatis+Vue的流浪动物救助网站的设计与实现

目录 前言 需求分析 可行性分析 技术实现 后端框架&#xff1a;Spring Boot 持久层框架&#xff1a;MyBatis 前端框架&#xff1a;Vue.js 数据库&#xff1a;MySQL 功能介绍 前台界面功能介绍 动物领养及捐赠 宠物论坛 公告信息 商品页面 寻宠服务 个人中心 购…

AI视觉入门:卷积和池化

从2012年以AlexNet为代表的模型问世以来&#xff0c;人工智能尤其是视觉cv部分飞速发展&#xff0c;在刚开始效果不如人类&#xff0c;到2015年在ImageNet1000数据集的表现就超过了人类。在Transformer模型出现之前&#xff0c;视觉模型的主要组成部分就是卷积和池化&#xff0…

在家也能赚钱!长期副业兼职,充分利用你的零碎时间!

2024年已然匆匆走过了三分之一&#xff0c;许多人或许都感受到了这一年大环境带来的压力。然而&#xff0c;对我而言&#xff0c;每个月的副业收入尚算可观&#xff0c;稳定在3000元以上&#xff0c;这让我深感庆幸&#xff0c;因为我找到了那份适合自己的副业。 打工的日子&a…

【40分钟速成智能风控1】互联网金融风险管理简介

目录 瓦联网金融的发展和现状 风险管理类型划分 欺诈风险 第一方和第三方 账户级和交易级 个人和团伙 互联网金融是传统金融业务与新兴互联网技术结合的一个交叉领域&#xff0c;例如互联网公司开展的金融业务&#xff0c;或者金融机构的线上化服务&#xff0c;都属于互联…

python 如何生成uuid

UUID&#xff08;Universally Unique Identifier&#xff09;是通用唯一识别码&#xff0c;在许多领域用作标识&#xff0c;比如我们常用的数据库也可以用它来作为主键&#xff0c;原理上它是可以对任何东西进行唯一的编码的。作为新手一看到类似varchar(40)这样的主键就觉得有…

从零到一:如何使用亮数据代理快速收集训练数据打造自己的AIGC大模型

这里写自定义目录标题 前言项目内容项目进展 1、本章节事项1.1、确定2个分类1.2、寻找来源网站1.2.1、京东搜索1.2.2、淘宝搜索1.2.3、唯品会搜索 1.3、编写代码&#xff0c;收集数据&#xff0c;并按照分类存放图片1.3.1、在Java项目里加载SeleniumChromeDriverJsoup的jar包1.…

【计算机毕业设计】医院电子病历管理系统

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

蓝桥杯刷题-05-子串简写-暴力

#include <iostream>using namespace std; string s; int main() {// 请在此输入您的代码int k0;int num0;char c1,c2;cin>>k;cin>>s;cin>>c1>>c2;int lens.size();for(int i0;i<len-k1;i){for(int ji1;j<len;j){if(s[i]c1&&s[j]c…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程

原文链接&#xff1a;基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600473&idx6&sn431e9408a42862d29fe4f4ef7703595b&chksmfa8208becdf581a820d9479d2aa61b88e96612c4ab72b0…

用苹果CMS一小时搭建自己的私人影院(仅供学习与参考,请勿用于商业用途)

用苹果CMS一小时搭建自己的私人影院&#xff08;仅供学习与参考&#xff0c;请勿用于商业用途&#xff09; 一、购买域名和服务器空间或虚拟主机空间。 二、下载苹果CMS影视安装程序到本地。 三、上传苹果CMS安装程序至你的空间并安装。 四、后台设置完善你的电影网站。 五、…