递归
几个 Simple 的递归例子
1 #include <iostream> 2 using namespace std; 3 4 // 递归求 n! 5 int fact(int n) 6 { 7 if (n <= 1) 8 return 1; 9 else 10 return n * fact(n-1); 11 }; 12 13 // 递归求 x^n (x的n次方) 14 int power(int x, int n) 15 { 16 if (0 == n) 17 return 1; 18 else 19 return x * power(x, n-1); 20 } 21 22 int main() 23 { 24 int i,j; 25 i = fact(5); 26 j = power(2, 5); 27 cout << i << endl; 28 cout << j << endl; 29 30 return 0; 31 }
// hanoi 问题。。。。对于递归调用,要学会举一反三。。。 #include <iostream> using namespace std; int k=1; // 定义了一个全局变量。是为了使输出界面更清晰。 // 定义在主函数外面的 move 函数。 void move(char x,char y) { // 实现移动盘子的操作。 cout<<" 第 "<<k<<"步: "<<x<<"--->"<<y<<endl; // 格式控制,让输出界面更友好。 k++; } // -----------关键函数--------用递归的方式定义的。要理解。。 void hanoi(int n, char one ,char two ,char three) { // 要注意这里参数的传递。。。深刻理解实参、形参 的传递。以及每个参数的生命周期。。 if(n==1) move(one ,three); // 开始递归定义了。。。。。。 else { hanoi(n-1,one ,three,two); // 掌握递归的用法。。 move(one ,three); // 递归这东西讲不清楚,需要自己花时间慢慢体会。。。 hanoi(n-1,two,one,three); // ......递归的............ } } int main() { int n; cout<<" 汉诺塔问题 "<<endl<<endl; cout<<" 请输入盘子的个数 :"; cin>>n; cout<<endl; cout<<" "<<n<<" 个盘子的移动顺序为:"<<endl<<endl; hanoi(n,'A','B','C'); // ---------直接调用写好的递归函数。。 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?