先留個簡介:
函數定義:
從定義可以看出是一個遞歸函數。阿克曼函數不僅值增長的非常快,而且遞歸深度很高。
一般用來測試編譯其優化遞歸調用的能力。。
如果用一下代碼簡單實現的話,輸入參數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); }