#创作计划#函数基础及基础搜索(待更新)
2025-10-26 11:57:46
发布于:北京
前文
正常来说,一个能在ACGO正常刷题的人,肯定都是学过函数的,但如果你是萌新,请一定要看完此文章。
函数基础
Q:函数是什么东西?
在数学中,函数是指相对于每个x只有一个对应数的y,称y是x的函数。
常见的一次函数:
而计算机中的函数函数是由其演变过来的,数学中的函数有一个函数解析式,而编程中函数的代码同等与函数解析式。
for example:我们要定义一个函数,需要有单独的格式:
//C++
int/double/......(返回值类型) xxx(){
xxx;
xxx;
xxx;
}
理论上每个所被定义的函数都有返回值,但可能出现无返回值的情况,也就是走一遍流程,比如初始化/赋值。
当我们的函数没有返回值的时候,int那个位置就要使用void:
void xxx(){
xxx;
xxx;
xxx;
}
若非void但没有返回值/void但使用return(返回),系统会报错。
在上面代码框的那个括号里面要填在本函数要使用到的变量/数组,除非有的变量/数组已经在全局里定义了,并且要在函数上方。
若在int main里面输入变量,会先传到括号里那个变量,再传到函数内的变量使用代码。
函数的调用和函数真值
在int main里面使用(函数的名字+括号+括号内的变量):
int q(int x,int y){
cout<<x+y;
}
int main(){
int x,y;
cin>>x>>y;
q(x,y);
}
可直接调用函数,使函数运行其代码。
正常来说,如果我们传了ab两个变量,然后在变量内将ab相加,并将其赋值与c,则c会被赋予a+b,但ab并未真正加起来。也就是说,我们在函数里运行的代码并不会改变参与变量本身的值。
那么如果我们想要改变原值怎么办:只需要在 的x前面加个'&':
int q(int &x,int &y){
cout<<x+y;
}
int main(){
int x,y;
cin>>x>>y;
q(x,y);
}
这样则可以改变他们的真值,是函数造成的效果计入到参与变量里面。
完整代码:A+B problem
#include<iostream>
using namespace std;
int n,m;//全局定义
void add(int &n,int &m){//函数真值(不加也行)
cout<<n+m;//函数内容
}
int main(){
cin>>n>>m;
add(n,m);//函数调用
return 0;
}
函数的递归
Q:在任何可运行的地方,比如int main,都可以运行函数,那么你是否想过若在在函数代码里调用函数会怎么样?
A:会不停运行,因为每当你运行到那个代码都会跳入新的函数。
那么如何停止呢?
做题时只有满足某个条件才会选择停止,那么我们在函数内最前的位置(因情况而定)设一个判断,如果满足了这个条件就return,否则计入函数代码继续递归:
完整代码:【递归】斐波那契数列
#include<iostream>
using namespace std;
int f(int n){
if(n==1||n==2){//边界判断
return 1;
}
return f(n-1)+f(n-2);//函数递归
}
int main(){
int n;
cin>>n;
cout<<f(n);
}
搜索基础(待更新)
全部评论 4
可以加一些markdowm
5天前 来自 浙江
0可恨的是我不会
5天前 来自 北京
0。
5天前 来自 浙江
0
d
5天前 来自 北京
0d
5天前 来自 北京
0支持
6天前 来自 北京
0



















有帮助,赞一个