• 函数调用,枚举和递归


    一:函数调用的时候有这几种形式,一种参数是数组的,可以这样定义,这种参数是数组:

    static void paixu(params int[] a)//可以输入数组元素,只能在数组前面加
            {
                for(int i=1;i<=a.Length-1;i++)


            }
            用的时候
            paixu(3,8,6,4,1);

    一种参数是地址的,在变量前面加ref:

    static void add(ref int n)//加上REF是传地址
            {

            }
            //主函数里面调用
            int a=5;
            add(ref a);

    一种是函数除了返回目标值之外,加out可以返回其它值,下面这个例子中函数除了返回一个n之外,还可以返回一个p值。

     static int add(int n,out int p)  //p是输出的一个参数,用out标识,Cshap特有的
            {
                int m = n * 10;
                p = m;
                //Console.WriteLine("add函数1:{0}", n);
                n = n + 10;
                Console.WriteLine("add函数2:{0}", n);
                return n;
            }

            static void Main(string[] sgar)
            {
                int x = 5;
                int b;
                x=add(x,out b);
                Console.WriteLine("Main函数1:{0}", x);

                Console.WriteLine("Main函数2:{0}", b);
            }

    二:函数前面加注释,为了在以后用到此函数的时候不会忘记此函数的功能,需要加一些注释,这样在使用的时候鼠标放到上面就会显示写好的注释,使用的时候是在函数上面输入///,也就是三个斜杠,输完之后出现这个:

    ///// <summary>
            /// 输入一个数字,返回它的阶乘,这里写函数的功能
            /// </summary>
            /// <param name="n">这里写n是做什么的:需要求阶乘的值</param>
            /// <returns>这里写返回的是什么东西:返回n的阶乘</returns>
            static int jiecheng(int n)
            {
                int jc = 1; int i;
                for(i=1;i<=n;i++)
                {
                    jc = jc * i;

                }
                return jc;

            }

    三:函数一个是传值另一个是传址;

    1.传值就是将实参的值传到所调用的函数里面,实参的值并没有发生变化,默认传值的有int型,浮点型,bool型,char字符型,结构体等等。

    2.传址就是将地址传到所调用的函数里面操作,实参的值也会跟着变化,传址的有数组和字符串string,字符串类型比较特殊后面说。

    3.上面说的就牵扯到数据的分类,分为值类型和引用类型,值类型的就是传值的那种,引用类型包括字符串类型,数组和对象,上面说字符串类型特殊,主要是因为字符串实际上是一个字符char[]数组,它在修改的时候并不是直接修改,而是新开辟了一个存储空间也就是建立了一个新的字符串,所以它在调用、赋值的时候相当于传值,但它是引用类型的!

    四:枚举

    枚举enum,用比较好记忆的拼音或者英文来标记数字,下面这个例子里weiruzhi是0,zhengshi 定义它是5,所以往下依次是6,7,tuixiu又定义了9:
            //枚举,
            enum YuanGongLeiXing
            {
                WeiRuZhi,
                ShiYongQi,
                ZhengShi=5,
                NeiTui,
                JieDiao,
                TuiXiu=9

            }
        struct YuanGong
    {
        public string name;
        public YuanGongLeiXing type;
    }


            class Program
            {
                static void Main(string[] args)
                {
                    YuanGong zhangsan=new YuanGong();
                    zhangsan.name = "张三";
                    zhangsan.type = YuanGongLeiXing.NeiTui;
                    Console.WriteLine(zhangsan.name+(int)zhangsan.type);

                }

    五:递归,递归的特点就是自己调用自己;return 是将数值返回上一级;

    刚开始没满足day=7的时候,只循环调用Taozi函数,其它求值之类的都未执行,可以看做是Taozi_1,Taozi_2,。。。Taozi_6,Taozi_7;

    在day=7的时候返回了一个值1到Taozi_7中,Taozi_7开始执行求值,求出第六天的桃子N,返回到Taozi_6中,这样继续下去求出了day=1时的桃子数返回

         class Program
            {
                     static int Taozi(int day)
                     {
                         if (day == 7)
                         {
                             return 1;
                         }
                         int n = (Taozi(day + 1) + 1) * 2;
                         return n;
                     }

                     static void Main(string[] args)
                     {
                         int n = Taozi(1);//求第一天有几个桃子
                         Console.WriteLine("公园里有{0}个桃子",n);
                     }

  • 相关阅读:
    资料下载
    sublime安装AngularJS插件
    Zen Coding: 一种快速编写HTML/CSS代码的方法[Emmet]
    手机号码归属地API
    浅谈JavaScript中的作用域
    原生ajax、jsoup
    Java排序:选择排序
    Java排序:冒泡排序
    Oracle系列一、基本术语
    linux jdk tomcat 安装
  • 原文地址:https://www.cnblogs.com/Alvin-ftd/p/3948336.html
Copyright © 2020-2023  润新知