三周C# 总结4 函数
来源:互联网 发布:河南省大数据谷是哪里 编辑:程序博客网 时间:2024/05/20 18:00
如何只遍历一次数组,从中找到两个最小的数.
public static void findmin(int[] arr)
{
int min1, min2;
if (arr[0] > arr[1])
{
min1 = 1; min2 = 0;
}
else {
min1 = 0; min2 = 1;
}
for (int i = 2; i < arr.Length; i++)
{
if (arr[i] < arr[min2]) {
if (arr[i] < arr[min1]) {
min2 = min1;//顺序不能颠倒
min1 = i;//顺序不能颠倒
}
else
{
min2 = i;
}
}
}
Console.WriteLine("{0} {1}",arr[min1],arr[min2]);
}
1.c#函数只能在某个类中定义,函数不能嵌套定义即在某个函数中定义其它函数。
函数由访问属性(public,private,protected,…);
2、函数调用:如果是静态函数,可以通过类名去直接调用;如果是非静态函数则需要通过类对象去调用。
3、形式参数与实际参数传递:
1) 值传递:基本值类型数据
static void swap(int x, int y)//不能交换x,y值
{
int t = x; x = y; y = t;
}
2) 引用传递:
static void swap(int[] arr)
{
int t = arr[0]; arr[0] = arr[1]; arr[1] = t;//能交换arr[0],arr[1]值
}
4、输出参数out
static void fun(int x1, int x2, out int x3)
{
x3 = x1 + x2;
}
static void Main(string[] args)
{
int x = 10, y = 100, z;
fun(x, y, out z);//接收输出参数值,不需要为z赋初始值
Console.WriteLine(x+" "+y+" "+z);
Console.ReadLine();
}
5、带有可变参数的函数
static int fun(int a,params int[] x)
{
int s = 0;
for (int i = 0; i < x.Length; i++)
s += x[i];
return s;
}
static void Main(string[] args)
{
Console.WriteLine(fun(1,2,3,4));
Console.WriteLine(fun(1));
Console.WriteLine(fun(1,3,4,4,6,7));
Console.ReadLine();
}
6.、递归函数:函数递归调用递归函数:1)递推公式,2)递归出口
//求阶乘
static long fac(int n){
if(n==0||n==1)
return 1;
else
return n*fac(n-1);//n!=n*(n-1)!
}
汉诺塔程序:
A ,B,C
n=1: A-->C
n>1: 将A柱 n-1盘借助于C搬到B柱
将A柱最后盘搬到C
将B柱 n-1盘借助于A搬到C柱
static void disp(string a,string c)
{
Console.WriteLine("{0}--->{1}", a, c);
}
static void hannota(string a, string b, string c, int n)
{
if (n == 1)
disp(a, c);
else
{
hannota(a, c, b, n - 1);
disp(a, c);
hannota(b, a, c, n - 1);
}
}
练习:编写一个程序找出100~1000之间的所有姐妹素数。
注: 姐妹素数是指相邻两个奇数均为素数。
class Pr4_2
{
static bool sushu(int n)
{
bool flag=true;
for (int i = 2; i <= Math.Sqrt(n); i++)
{
if (n % i == 0)
{
flag = false;
break;
}
}
return flag;
}
static void Main(string[] args)
{
for (int i = 100; i < 998; i++)
{
bool jg = sushu(i);
if (jg)
{
bool jg1 = sushu(i + 2);
if (jg1)
Console.WriteLine("{0,-3} {1,-3}" ,i,(i+2));
}
}
Console.ReadLine();
}
利用求n!的方法计算 2!+4!+5!的值。分别利用递归和非递归方法实现求n!
(1)递归:
class Pr4_6
{
static int digui(int n)
{
int sum=0;
if (n == 0 || n == 1)
sum = 1;
else
sum = n * digui(n - 1);
return sum;
}
static void Main(string[] args)
{
int sum =digui(2)+digui(4)+digui(5);
Console.WriteLine("{0}+{1}+{2}={3}","2!","4!","5!", sum);
Console.ReadLine();
}
}
(2)非递归:
class Pr4_6
{
static int digui(int n)
{
int sum=1;
if (n == 0 || n == 1)
sum = 1;
else
for (int i = 2; i <= n; i++)
sum = sum * i;
return sum;
}
static void Main(string[] args)
{
int sum =digui(2)+digui(4)+digui(5);
Console.WriteLine("{0}+{1}+{2}={3}","2!","4!","5!", sum);
Console.ReadLine();
}
}
- 三周C# 总结4 函数
- 三周C#总结三
- 三周C#总结(2)
- c#三周总结6 类继承
- 三周C#总结7oop--多态
- C#总结(三)
- C#总结(三)
- Halcon函数总结(三)
- C#字符串函数 总结
- C#字符串函数 总结
- c#时间函数总结
- c#常用函数总结
- c# 构造函数总结:
- C#总结---字符串函数
- C#基础知识总结(三)
- C#三周总结(5)面向对象编程OOP
- C#中常用函数总结
- c#语法总结2 - 函数
- linux内存管理浅析
- Nginx-ngx_list
- ORA-01113: file 8 needs media recovery【数据文件的OFFLINE操作造成】
- NYOJ 题目119 士兵杀敌(三)(线段树,区间最值)
- CSS实例(六):实现网页固定大小三态图形按钮简单方法
- 三周C# 总结4 函数
- Java集合类详解
- hibernate hbm.xml 配置文件中的主键生成策略
- winsocket 之收发数据出问题
- JS微信打飞机游戏(四)
- C#中使Label控件中的文字实现从左到右滚动效果
- 关于@synchronized(self)的用法
- ubuntu搭建可匿名访问ftp服务器
- 数据库脚本