ACK函数的非递归写法

ACK函数:

image

非递归表示方式(C语言)


#include <stdio.h>

#define M 1000

#include<stdio.h>

//非递归解法

#define M 1000

int ACK(int m, int n)

{

    int STACK[M], top = 0;

    STACK[top] = m;

    STACK[top + 1] = n;

    while (top >= 0)

    {

        if (STACK[top] > 0)

        {

            if (STACK[top + 1] > 0)

            {

                STACK[top + 2] = STACK[top + 1] - 1;

                STACK[top + 1] = STACK[top];

                STACK[top] = STACK[top++] - 1;

            }

            else {

                STACK[top] = STACK[top - 1];

                STACK[top + 1] = 1;

           }

        }

        else {

            STACK[top] = STACK[top + 1] + 1;

            top--;

        }

    }

    return STACK[0];

}

int main()

{

    int res = ACK(1, 0);

    printf("%d", res);

    return 0;

}


详细分析晚上回来再补

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文有七千字,阅读大约需要占用你10分钟时间。 好吧。。随便写的,我也不知道会花多久看完。因为写的比较烂,而且只是...
    锅与盆阅读 8,193评论 5 36
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 金先生:鹅代表你的钱,如果你存钱,你会得到利息,利息就是金蛋。吉婭带拿破仑非常顺利,拿破仑又学会了2项本领。得到了...
    芳芳行洁阅读 232评论 0 0
  • reference: https://developer.apple.com/library/content/do...
    Zihowe阅读 246评论 0 0
  • 昨天晚上,十一点半时,本应是我入睡的时间,却因为想到后天就要转博答辩了,而深感不安,十分担忧读了博士以后的生活,甚...
    晓婷子阅读 338评论 1 1