1
2
3
4
5
6

函数

发布时间:2020-03-10 19:10   发布人:焦卫峰   浏览次数:350

1.函数的定义和使用

数学中函数的定义

编程:函数是一段已经封装好的,能够实现某种功能的代码。

 

过程和函数

作用:

可以使代码清晰;实现代码的复用

 

1)定义

格式1:

static void 函数名(参数列表){

函数体;

}

格式2:

static 函数返回值类型 函数名(参数列表){

函数体;

return (返回值);  // 或者写成return 返回值;

}

2)使用

3)参数和返回值

形参和实参

返回值:return

 

思考:

return语句可不可以放在函数体的中间位置

允许出现多个return吗

 

参数列表格式:

参数类型1 参数名称1, 参数类型2 参数名称2……

 

4)案例

使用数组作为参数,返回数组中的最大值

2.引用参数和值参数

值参数:

使用参数时,把值传递给函数;在函数体对该变量进行改变,不会影响函数的参数

 

引用参数格式:

ref 参数类型 参数名称

 

说明:

1)在函数调用时要再次指定它为引用参数(输出参数也是如此,调用时必须声明为输出参数)

2)函数可能会改变引用参数变量的值,所以它不可以是“常量”,并且该变量必须初始化过(out参数不需要)。

3) ref 或 out可以构成函数的重载

 

案例:

int []a={1,2,3,4,5};

int []b=a;

b[2]=100;

 

使用函数,交换两个变量的值(普通参数为什么不能交换?)

3.输出参数

输出参数格式:

out 参数类型 参数名称

out 型参数只能用来从函数返回结果,而不能用来向函数传递数据。在函数结束前,必须为 out 型参数赋值。

4.可选参数

可选参数(默认参数),是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数

 

注意:

1)可选参数必须位于所有的必选参数之后

2)可选参数必须指定一个默认值,且默认值必须是一个常量表达式,不能为变量

3)所有可选参数以后的参数都必须是可选参数

5.命名参数

通过命名参数调用,实参顺序可以和形参不同。

例如:

int s=sum(a:5,b:6);

命名参数必须出现在已指定的所有固定参数之后。一旦某个参数命名,它后面的均需命名。

6.参数数组

格式:

params 参数类型[ ]参数名称

 

说明:

1)只允许存在一个参数数组

2)这个参数必须是参数列表的最后一个参数

 

案例:

使用参数数组求一组数的和

7.Main()函数

Main()函数是c#程序的入口,执行这个函数就是执行应用程序

格式:

static void Main()

static int Main()

static void Main(string[ ]args)

static int Main(string[ ]args)

8.结构函数

结构类型不仅可以存储多个不同类型的数据元素,还可以包含函数

说明:

结构函数一般不使用static修饰符

9.函数的重载

允许创建多个同名函数,每个函数使用不同的参数类型

 

说明:

1)参数的个数不同或者参数的类型不同(形参名字不同不构成函数重载)

2)只是返回值类型不同不构成函数的重载

10.函数的递归调用

思考:

一个函数可以调用其他函数,可不可以调用自身?

 

一个函数直接或间接调用自己本身,这种函数叫递归函数。

递归能使程序变得简洁和清晰。

注意:每次递归调用都必须有结束条件判断-也就是说是有条件的,无条件递归调用将会成为死循环而不能正常结束。

 

案例:

1)阶乘

f(n)=n*f(n-1)

结束条件:n=0时返回1

2)斐波那契数列-Fibonacci

1,1,2,3,5,8,13,21……

数列的第一、二项为1

从第三项开始,数列的每一项是前两项的和

f(n)=f(n-1) f(n-2)

结束条件:n=1或n=2时返回1