首页 > 技术文章 > Ackerman 函数

san-fu-su 2016-08-10 11:05 原文

先留个简介:

函数定义:

  从定义可以看出是一个递归函数。阿克曼函数不仅值增长的非常快,而且递归深度很高。

一般用来测试编译其优化递归调用的能力。。

如果用一下代码简单实现的话,输入参数4,2程序就直接奔溃了,(复杂度太大)

#include <stdio.h>
int ackerman (int m, int n) {
    int i, tmp;
    if (m == 0) return n+1;
    if (n == 0 && m > 0) return ackerman (--m, 1);
    if (n > 0 && m > 0 ) {
        return ackerman (m-1,ackerman(m, n-1));
        }
    return 0;
}

int main() {
    int m, n, acker;
    scanf("%d %d", &m,&n);
    acker = ackerman(m, n);
    printf ("%d", acker);
}

 

推荐阅读