Ackerman 函数

先留个简介:

函数定义:

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

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

如果用一下代码简单实现的话,输入参数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);
}

 

posted @ 2016-08-10 11:05  三复苏  阅读(2055)  评论(0编辑  收藏  举报