把九连环的递归算法改为非递归 求助!!!

qq_42852796 2019-01-15 01:26:16
#include<stdio.h>

void up(int n);//上环算法
void down(int n);//下环算法

int upCnt;//上环次数
int downCnt;//下环次数

int main(){

int n;//几连环

printf("请输入环数:");
scanf("%d",&n);
//上环过程演示
upCnt = downCnt = 0;//初始化为0
printf("-----上环过程如下-----\n");
up(n);
printf("上环总次数:%d, 下环总次数:%d, 上下总次数:%d\n", upCnt, downCnt, upCnt+downCnt);
printf("\n");

//下环过程演示
upCnt = downCnt = 0;//重新设置为0
printf("-----下环过程如下-----\n");
down(n);
printf("上环总次数:%d, 下环总次数:%d, 上下总次数:%d\n", upCnt, downCnt, upCnt+downCnt);
return 0;
}

//上环算法
void up(int n){
//先上N-1连环
if(n>1){up(n-1);}
//再下N-2连环
if(n>2){down(n-2);}
//再上最后一个环
printf("上%d环\n",n);
upCnt++;//累计上环次数
//再上N-2连环
if(n>2){up(n-2);}
}
//下环算法
void down(int n){
//先下N-2连环
if(n>2){down(n-2);}
//再下最后一个环
printf("下%d环\n",n);
downCnt++;//累计下环次数
//再上N-2连环
if(n>2){up(n-2);}
//再下N-1连环
if(n>1){down(n-1);}
}



这个程序要怎么改成非递归的,求助!!!!
...全文
200 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lophia610 2021-12-30
  • 打赏
  • 举报
回复

请问是怎么解决的

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧