标签:erb 相同 美国 eps 形参 wap 递归 斐波那契数 命名
函数解析
1、为什么要用函数
想知道为什么要使用函数,那我们先要知道什么是函数?
函数是一段可以重复使用的代码,用来独立地完成某个功能,也可以用来接收用户传递的数据。美国人将函数称为“Function”,Function除了有“函数”的意思,还有“功能”的意思,从本质上看,程序是由函数组成的,也可以说程序是由一个个功能组成的。
在了解了函数之后,我们开始了解为什么使用函数?
当一个函数特别小的时候,我们可以直接将所有的代码都写入main()主函数中;但当我们开始一个庞大的程序开发,程序越来越复杂,如果依旧将所有的代码都放入main中,我们的开发会变得越来越困难,这个时候函数的作用就非常实用。
(1)可重用性 可以在函数中多次调用,避免了重复的代码,功能还可以实现共享。
(2)降低程序的复杂程度 将复杂任务划分成更小,更简单的任务
...
int sum(int a,int b)
{
int num;
num=a+b;
return num;
}
int main()
{
int x=10,y=11,z=12;
int num1,num2;
num1=sum(x+y);
num2=sum(x+z);
return 0;
}
...
我用一个最简单的加法函数,来体现函数对于程序的便利性。
2、为什么要用函数重载
同样,我们先来了解一下函数重载?
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同函数列表的函数。重载函数通常用来命名一组功能相似的函数。
重载函数有什么好处呢
(1)减少了函数名的数量,避免了名字空间的污染
(2)增加了程序的可读性
...
int sumOfSquare(int a,int b)
{
return a*a+b*b;
}
double sumOfSquare(double a,double b)
{
return a*a+b*b;
}
int main()
{
int m,n;
cout<<"Enter two integer:";
cin>>m>>n;
cout<,"Their sum of square:"<<sumOfSquare(x,y)<<endl;
double x,y;
cout<<"Enter two integer:";
cin>>x>>y;
cout<<"Their sum of square:"sumOfSquare(x,y)<<endl;
return 0;
}
...
3、什么是值传递
值传递是指在过程调用时,传递给形参的是调用过程中的相应实参的值,形参与实参各占有不同位值的储存空间,在执行过程中,改变了形参变量的值,但不会调用过程的实参值。
通过实验过程来进一步了解值传递
...
#include <stdio.h>
void swap(int a,int b)
{
int t;
printf("(2)a=%d b=%d\n",a,b); /*调用函数过后形参的值*/
t=a;a=b;b=t;
printf("(3)a=%d b=%d\n",a,b); /*调用函数内交换后形参的值*/
}
int main()
{
int a=10,b=20;
printf("(1)a=%d b=%d\n",a,b); /*实参a,b未调用函数时的值*/
swap(a,b);
printf("(4)a=%d b=%d\n",a,b); /*实参a,b调用后的值*/
return 0;
}
...
4、什么是地址传递
地址传递是指在过程被调用时,是把实参变量的内存地址传递给被调用过程形参,实际就是形参与实参使用相同地址的内存单元,改变了形参值也就是改变了实参的值。
通过实验过程进一步了解地址传递
...
void fun(int *b)
{
*b = 1;
}
int main()
{
int a = 0;
fun(&a);
printf("a=%d\n", a);
return 0;
}
...
5、递归函数
对于递归函数,我的理解就是在函数执行时,函数直接或间接调用函数本身。
其中斐波那契数列是一个非常常见的递归函数。
...
int Fibon(int n)
{
if(n==1||n==2)
{
return 1;
}
else
{
return Fibon(n-1)+Fibon(n-2);
}
}
...
标签:erb 相同 美国 eps 形参 wap 递归 斐波那契数 命名
原文地址:https://www.cnblogs.com/xlog/p/11505636.html