注册 登录
编程论坛 数据结构与算法

求指教,死循环,递归

韩学敏 发布于 2013-04-12 14:31, 571 次点击
运行之后死循环了,而且调用次序一直是1.。。怎么搞的


#include<stdio.h>
int ackerman(int m,int n);
int main(void)
{
    int result,m,n;
    printf("please input m and n:");
    scanf("%d%d",&m,&n);
    result=ackerman(m,n);
    printf("result=%d",result);
    return 0;
}
int ackerman(int m,int n)
{
    int callindex=1;
    if(m==0)
    {
        printf("调用次序:");
        printf("%d",callindex);
        callindex++;
        printf("  m=%d n=%d",m,n);
        printf("\n");
        return n+1;
    }
    else if(m!=0&&n==0)
    {
        printf("调用次序:");
        printf("%d",callindex);
        callindex++;
        printf("  m=%d n=%d",m,n);
        printf("\n");
        return ackerman(m-1,1);
    }
    else if(m!=0&&n!=0)
    {
        printf("调用次序:");
        printf("%d",callindex);
        callindex++;
        printf("  m=%d n=%d",m,n);
        printf("\n");
        return ackerman(m-1,ackerman(m,n-1));
    }
    else
        return -1;
}
1 回复
#2
凌云飞翔2013-04-12 16:57
if(m!=0&&n==0)
    {
        printf("调用次序:");
        printf("%d",callindex);
        callindex++;
        printf("  m=%d n=%d",m,n);
        printf("\n");
        return ackerman(m-1,1);
  将此语句中的   return ackerman(m-1,1); 改为   return ackerman(m-1,0);试试
另外调用次序是不是递归的次数,感觉callindex设为全局变量比较好
1