汉诺塔的问题来理解递归
第一步:贴代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 汉诺塔 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("请输入hanoi的层数"); 14 int HaoniN=int.Parse(Console.ReadLine()); 15 MoveTo move = new MoveTo(); 16 move.MoveStep(HaoniN, "A柱", "B柱", "C柱"); 17 } 18 } 19 20 public class MoveTo 21 { 22 public void MoveStep(int n, string A, string B, string C) 23 { 24 if (n == 1) 25 { 26 Console.WriteLine(A + "移动到" + C); 27 } 28 else 29 { 30 MoveStep(n - 1, A, C, B); 31 Console.WriteLine(A + "移动到" + C); 32 MoveStep(n - 1, B, A, C); 33 } 34 } 35 36 } 37 38 39 }
感悟:
一、熟悉面向对象的编程思路,熟悉类的实例化(对象)过程,(图书馆和图书的关系);
二、递归的思路
递归,之前学python入门到放弃的时候接触过,但是理解的一知半解,并没有实实在在的理解到,在目前的水平和阶段上,对汉诺塔的例子进行了写作,基本上明白了点,得到了点皮毛。
1.递归,表现形式上就是自我调用;
2.自我调用过程中,方法(函数)的参数是需要站在一定的角度去理解,比如上面的ABC,在自我调用的过程中,位置和顺序可能就会发生了改变,怎么确定?用代入实数法解决;
3.递归就是由整变零的过程,在这个例子中,n代表的是整,然后n-1也是整,逐层剥皮,最终的结束点就是当n=1的时候,n从大到小,最终会到1,递归就结束了,自我调用也就结束了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义