#include<stdio.h>
#include<iostream>
using namespace std;
void Hanoi(int n, char A, char B, char C);//5.递归汉诺塔
int Divide(int n, int m, int len);//6.整数分划
void Output(int num[], int len);
int divide[100] = {0};
int main ()
{
Hanoi(3, 'A', 'B', 'C');
cout << Divide(5, 4, 0);
}
void Hanoi(int n, char a, char b, char c)
{
if(n == 0)
return;
Hanoi(n - 1, a, c, b);
printf("remove %d from %c to %c\n", n, a, b);
Hanoi(n - 1, c, b, a);
}
int Divide(int n, int m, int len)
{
if(n < 0 && m < 0)
{
printf("error");
return 0;
}
else if(n == 1 && m > 1)
{
divide[len] = 1;
Output(divide, len + 1);
return 1;
}
else if(n >= 0 && m == 1)
{
if(n == 0)
{
Output(divide, len);
}
else
{
divide[len] = 1;
Divide(n - 1, m, len + 1);
}
return 1;
}
else if(n < m)
{
return Divide(n, n, len);
}
else if(n == m)
{
divide[len] = m;
Output(divid
[算法设计与分析]3.1.2递归设计要点(汉诺塔+整数的分划)
最新推荐文章于 2023-09-08 00:20:15 发布
本文深入探讨了算法设计中的递归思想,以汉诺塔问题和整数分划为例,阐述递归设计的关键要点。通过解决汉诺塔的移动策略,展示了递归在解决复杂问题时的简洁与高效。同时,分析了整数分划问题的递归解决方案,揭示了递归在数学问题中的应用。

最低0.47元/天 解锁文章
495

被折叠的 条评论
为什么被折叠?



