枚举:
//一组常量的组合
//在不指定任何索引的情况下,默认第一个字段从0开始,之后依次+1 //在指定索引的情况下,之后字段索引依次+1 //若之前定义的一个字段的索引指向了之后的某个默认字段,那么他俩完全相同 //若定义枚举类型时,下面有个字段等于以前的的一个字段,那么就等于之前的那个字段 //若等于之前的一个字段的时候强制取int,那么就等于之前那个字段的值class Program { / //定义 enum meiju:int { //one, one=3, two=1, //two=2, three, four=three } static void a(string[] args) { //在不取int类型的时候,打印出来的是常量字段 Console.WriteLine(meiju.one); //在取int类型的时候,出来的是这个字段代表的值 Console.WriteLine((int)meiju.one); //若定义枚举类型时,下面有个字段等于以前的的一个字段,那么就等于之前的那个字段 Console.WriteLine(meiju.four); //若等于之前的一个字段的时候强制取int,那么就等于之前那个字段的值 Console.WriteLine((int)meiju.four); //不管第一个常量指定索引从几开始,那么之后的所有常量的代表值会自动加1 Console.WriteLine(meiju.two); Console.WriteLine((int)meiju.two); Console.WriteLine((int)meiju.three); Console.ReadLine(); }
递归:
定义:函数体内调用函数本身,直到符合某一条件不再继续调用。
满足条件:
1.有反复执行的过程(调用自身)
2.又跳出反复执行过程的条件(函数出口)
注意事项:
1.递归中必须要存在一个循环结束的条件
2.递归函数每次调用都需要栈来存储,如果次数太多的话容易造成栈溢出。
class Class1 { //n的阶乘 public int Jie(int n) { int sum; if(n==1) { return 1; } sum = n * Jie(n-1); //sum=5*(4*Jie(3)); //sum=5*(4*(3*Jie(2))); //sum=5*(4*(3*(2*Jie(1)))); //sum=5*(4*(3*(2*1))); return sum; }static void Main(string[] args) { Class1 jc = new Class1(); Console.Write("请输入一个正整数:"); int sum = jc.Jie(int.Parse(Console.ReadLine())); Console.WriteLine("sum="+sum); }
//老汉卖羊
class Class1 { public int yang(int n) { int sum; if (n == 7) { return 2; } sum = 2 * (yang(n + 1) + 1); return sum; } static void Main(string[] args) { Class1 maiy = new Class1(); int n = maiy.yang(1); Console.WriteLine("最初" + n + "只羊"); } }
//猴子摘了好多好多桃子,一天要吃掉总数的2/3,觉得不过瘾,还要多吃1个,
//吃到第九天时,发现只有两个桃子,问最初有多少桃子?class Class1 { public int taozi(int n) { int sum; if(n==9) { return 2; } sum = 3* (taozi(n + 1)+1); return sum; } static void Main(string[] args) { Class1 hs = new Class1(); int a = hs.taozi(1); Console.WriteLine("最初"+a+"个桃子"); } }