dedecms网站开发环境,深圳投资推广署官网,自己搭建服务器做视频网站,北京建设银行官方网站函数 函数是指将一组能完成一个功能或多个功能的语句放在一起的代码结构。在C语言程序中#xff0c;至少会包含一个函数#xff0c;主函数main()。本章将详细讲解关于函数的相关内容。
1、库函数 ⭕️C语言库函数是指在C语言标准库中预先定义好的函数#xff0c;这些函数包…函数 函数是指将一组能完成一个功能或多个功能的语句放在一起的代码结构。在C语言程序中至少会包含一个函数主函数main()。本章将详细讲解关于函数的相关内容。
1、库函数 ⭕️C语言库函数是指在C语言标准库中预先定义好的函数这些函数包含在相应的头文件里每个函数都有其函数名、返回值类型和函数参数这些函数用于执行常见的任务例如输入输出、字符串处理、内存操作等。
⭕️C语言标准库是一组标准化的函数和工具旨在为C语言程序员提供基本的编程支持。库函数通常以源代码形式或预编译形式提供可以直接在C程序中使用而无需从零开始编写这些功能的代码以下情况使用的函数都属于库函数
比如我们想把程序结果打印到屏幕上看看会频繁的使用一个功能将信息按照一定的格式打印到屏幕上printf。
在编程的过程中我们会频繁的做一些字符串的拷贝工作strcpy。
在编程是我们也计算总是会计算n的k次方这样的运算pow。
#include stdio.h
2、自定义函数
❓如果库函数能干所有的事情那还要程序员干什么
⭕️所以更加重要的是自定义函数自定义函数和库函数一样有函数名返回值类型和函数参数但是与库函数不一样的是这些都是我们自己来设计这就给程序员了一个很大的发挥空间。
我们来看一个自定义的函数实现找出两个整数中的最大值
#include stdio.h
//get_max函数的设计int get_max(int x, int y)
{return (xy)?(x):(y);
}int main()
{int num1 10;int num2 20;int max get_max(num1, num2);printf(max %d\n, max);return 0;
}
3、函数的组成 一个C语言函数通常由以下几个部分组成
返回类型指定函数返回的数据类型。如果函数不返回任何值则使用 void 。
函数名函数的名称用于调用该函数。
参数列表一组定义在圆括号内的参数用于接受调用者传递给函数的数据。参数可以是多种数据类型甚至是其他函数。
函数体包含在花括号 { } 中的代码块这里包含了函数执行的具体逻辑。
⭕️其中返回类型指定了函数执行完毕后返回的数据类型可以是整型、字符型、等如果函数不返回任何值则使用 void。例如int 表示函数返回一个整数void 表示函数不返回任何值。
⭕️函数名是函数的标识符用于在程序中调用该函数。我们在写函数时函数名应该清晰地反映函数的目的或行为。 看看会输出什么
#include stdio.h
void add(int x) {x;
}
int main() {int x 10;add(x);printf(%d, x);return 0;
}
#include stdio.h
int add(int x) {x;return x;
}
int main() {int x 10;xadd(x);printf(%d, x);return 0;
}
函数递归
1、什么是递归
程序调用自身的编程技巧称为递归 recursion函数递归是指函数在执行过程中调用自身的一种技术。
2、递归的限制条件
递归在书写的时候有2个必要条件
递归存在限制条件当满足这个限制条件的时候递归便不再继续。每次递归调用之后 越来越接近这个限制条件。
看看会输出什么(根据代码理解上面两句话)
#include stdio.h
void digui() {printf(Hello World\n);digui();
}
int main() {digui();return 0;
} 没有递归结束条件无限循环X
#include stdio.h
void digui(int x) {if (x 0) {return;}printf(Hello World\n);digui(--x);return;
}
int main() {digui(3);return 0;
}
有结束条件且每次递归调用之后 越来越接近这个限制条件 √
3、递归举例
阶乘 递归实现的过程
将5的阶乘分成4的阶乘乘5 将4的阶乘分成3的阶乘乘4 将3的阶乘分成2的阶乘乘3 将2的阶乘分成1的阶乘乘2 这样的思路就是把⼀个较大的问题转换为⼀个与原问题相似但规模较小的问题来求解的。直到n是1或者0时不再拆解 最终将n的阶乘就写成n*(n-1)! 直到n是1或者0时不再拆解 如果将阶乘写成一个函数Fact(n), 那么Fact(n)n*Fact(n-1)
再稍微分析一下当 n1 的时候n的阶乘是1其余n的阶乘都是可以通过上述公式计算。 n的阶乘的递归公式如下 运行代码
#include stdio.h
int Fact(int n)
{if (n 0)return 1;elsereturn n * Fact(n - 1);
}int main()
{int n 0;scanf(%d, n);int ret Fact(n);printf(%d\n, ret);return 0;
} 斐波那契数列 在数学上斐波那契数是以递归的方法来定义 令F0 0; F1 1; 则Fn F(n - 1) F(n - 2)其中n ≥2。即——从数列的第三项开始每一项的值等于前面两项之和称为斐波那契数列。斐波那契数列的前几项如下所示 : PS : 0不是第一项而是第零项斐波那契数列在文本上从1开始。 思路 : 设n代表斐波那契数列的第n项当n等于1或者等于2时可以直接返回1当n大于2时要想求出斐波纳契数列的第n项必须知道它前面的两项分别是多少而要想知道它前面的两项分别是多少就又得知道这两项再分别往前的两项是多少依次递归下去直到n 1或者n 2的情况时return 1接着再逐层返回回到你想求出的第n项。
代码如下
#include stdio.h
int fei(int x) {if (x 2) {return 1;}else {return fei(x - 1) fei(x - 2);}
}
int main() {int n;scanf(%d, n);int ansfei(n);printf(%d, ans);return 0;
}
最后提出疑问
输入一个数值n输出1-n数字的全排列
例如 n3
全排列为
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1