三周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();

        }

    }


原创粉丝点击