在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这些题目都来源于网络,参考之前的答案,针对每道题做了简单的分析,恳请大家批评指正。
1. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
递归计算
1 /// <summary>
2 /// 主函数 3 /// </summary> 4 /// <param name="args"></param> 5 static void Main(string[] args) 6 { 7 Console.WriteLine(Foo(30)); 8 Console.ReadLine(); 9 } 10 11 /// <summary> 12 /// 计算1、1、2、3、5、8、13、21、34......数列的结果 13 /// </summary> 14 /// <param name="i"></param> 15 /// <returns></returns> 16 static int Foo(int i) 17 { 18 int j = 0; 19 20 if (i <= 0) 21 { 22 j = 0; 23 } 24 else if (i > 0 && i <= 2) 25 { 26 j = 1; 27 } 28 else 29 { 30 j = Foo(i - 1) + Foo(i - 2); 31 } 32 return j; 33 }
2. C#中的委托是什么? 委托是函数的封装,代表一"类"函数,它们都符合一定的签名:拥有相同的参数列表、返回值类型。同时,委托也可以看成是对函数的抽象,是函数的"类"。此时委托的实例代表一个具体的函数。
委托实例
1 public delegate void DoHit(string skill); // 定义委托
2 3 class Program 4 { 5 /// <summary> 6 /// 山岭巨人的攻击方法 7 /// </summary> 8 /// <param name="skill"></param> 9 private static void TinyHit(string skill) 10 { 11 Console.WriteLine("使用了技能:" + skill); 12 } 13 /// <summary> 14 /// 巫妖的攻击方法 15 /// </summary> 16 /// <param name="skill"></param> 17 private static void LichHit(string skill) 18 { 19 Console.WriteLine("使用了技能:" + skill); 20 } 21 /// <summary> 22 /// 接收DoHit类型的方法作为参数 23 /// </summary> 24 /// <param name="skill"></param> 25 /// <param name="MakeHiting"></param> 26 private static void Hit(string skill, DoHit MakeHiting) 27 { 28 MakeHiting(skill); 29 } 30 /// <summary> 31 /// 主函数 32 /// </summary> 33 /// <param name="args"></param> 34 static void Main() 35 { 36 Hit("山崩", TinyHit); 37 Hit("霜冻之星", LichHit); 38 Console.ReadLine(); 39 } 40 } 这里也可以将方法绑定到委托上,主函数可以改写为如下形式
方法绑定至委托
1 /// <summary>
2 /// 主函数 3 /// </summary> 4 /// <param name="args"></param> 5 static void Main() 6 { 7 DoHit myDelegate; 8 myDelegate = TinyHit; 9 myDelegate("山崩"); 10 myDelegate += LichHit; 11 myDelegate -= TinyHit; 12 myDelegate("霜冻之星"); 13 14 Console.ReadLine(); 15 }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论