C++ 阿克曼函数don';t在C+中不能正常工作+;

C++ 阿克曼函数don';t在C+中不能正常工作+;,c++,ackermann,C++,Ackermann,在我的阿克曼函数的家庭工作中,我解决了以下问题 int main() { int y = ack(4,1); cout<<"ans is :::: "<< y; getch(); return 0; } int ack(int m, int n) { if(m == 0) { return n+1; } else if(m > 0 && n == 0) {

在我的阿克曼函数的家庭工作中,我解决了以下问题

int main()
{
    int y = ack(4,1);
    cout<<"ans is :::: "<< y;

    getch();
    return 0;
}

int ack(int m, int n)
{
    if(m == 0)
    {
        return n+1; 
    }
    else if(m > 0 && n == 0)
    {
        return ack(m-1,1);  
    }
    else if(m > 0 && n>0)
    {
        int x = ack(m,n-1);
        return ack(m-1,x);
    }
    else 
    {
        cout<< "did not worked properly";
    }   
}
intmain()
{
int y=ack(4,1);
cout0)
{
int x=确认(m,n-1);
返回应答(m-1,x);
}
其他的
{
cout数字
(4,15)
是一个无法计算和表示的大数字。请看。例如
(4,2)
比可观测宇宙中的粒子数大几个数量级

我有一个想法。重点是向你展示一些东西是多么疯狂的增长。人类有问题去摸索指数增长,与阿克曼函数相比,指数增长是苍白的


思考大数字可以得出有趣的结论。想象一下,你正沿着
2^2^65536-3
米长的道路行走(这就是
ackermann(4,3)
)假设人类的平均身体大约等于
1m^3
它有
10^10^70
。沿着这条路走下去,你会遇到你的翻倍者——量子层次上的精确翻倍者!所以他们会有完全相同的想法,相同的伤疤,在同一个地方有发痒的肘部。他们甚至会消化相同的食物。你会遇到数十亿比尔数以十亿计的Doppelganger。对我来说,这真是令人兴奋。

你会遇到堆栈溢出。递归地计算Ackermann函数会导致非常深的递归。让它在每次调用时打印出一些东西,看看有多深。谢谢@lukas。我打印了它的迭代次数,我发现它只用于(3,9)就非常大了。人类通常对如何看待指数尺度有很好的想法;比线性尺度好得多。例如,请参阅。@rubenvb对数尺度,而不是指数尺度。相关但不等效。@Konrad相同/相反的差异。它是2^73还是2^(2^73)量子态?2^73对于1立方米的物质来说不是很多。