把九连环的递归算法改为非递归 求助!!!
#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);}
}
这个程序要怎么改成非递归的,求助!!!!