当前位置:文档之家› 分段函数的递归算法和非递归算法

分段函数的递归算法和非递归算法

//非递归
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define StackSize 100
typedef int StackData;
struct stack
{
int m;
int n;
};
struct stack S[StackSize];
scanf("%d,%d",&m,&n);
akm=AKM(m,n);
printf("akm=%d\n",akm);
system("pause");
printf("\n");
case '3':
exit(1);
break;
default:
printf("您输入的菜单项不存在,请重新输入!");
break;
{
akm=n+1;
}
else if(n==0)
{
akm=AKM(m-1,1);
}
else
{
k=AKM(m,n-1);
akm=AKM(m-1,k);
}
return akm;
}
//非递归函数
int Akm(int m,int n)
{
int top=0;
int akm;
S[top].m=m;
S[top].n=n;
}
}
}
while(top!=0||S[top].m!=0)
{
while(S[top].m)
{
while(S[top].n)
{
top++;
S[top].m=S[top-1].m;
S[top].n=S[top-1].n-1;
}
S[top].m--;
S[top].n=1;
}
if (top>0)
{
top--;
S[top].m--;
switch(j)
{
case '1':
printf("请输入两个正整数,用逗号隔开:\n");
scanf("%d,%d",&m,&n);
akm=Akm(m,n);
printf("akm=%d\n",akm);
system("pause");
printf("\n");
break;
case '2':
printf("请输入两个正整数,用逗号隔开:");
printf("| |\n");
printf("| 3、退出|\n");
printf("|-------------------------|\n");
printf("\n");
printf("请选择菜单项:");
}
//递归
int AKM(int m,int n)
{
int akm,k;
if(m==0)
int top;
//菜单
void Menu()
{
printf("\n");
printf(" [菜单]\n");
printf("|-------------------------|\n");
printf("| 1、非递归|\n");
printf("| |\n");
printf("| 2、递归|\n");
S[top].n=S[top+1].n+1;
}
}
akm=S[top].n+1;
top--;
return akm;
}
//主函数
int main()
{
int m,n,akm;
char j;
le(1)
{
system("cls");
Menu();
getch();
system("cls");
j=getch();
相关主题