我正在尝试用 C++ 打印 Ackermann 的函数值
前 50 个结果是正确的,但随着数字开始增长,最后一位数字开始打印错误。
例如:
// 将 ack(m, n) 视为 ackermann 函数
case ack(3, 51) should print 18014398509481981 but instead it prints 18014398509481980. The diffence is always between 1 and 3 on the last digit case ack(3, 175) should print 383123885216472214589586756787577295904684780545900544 and it prints 383123885216472214589586756787577295904684780545900541.
我正在尝试打印这些巨大的数字而不将它们存储到变量中,因为我不知道任何可以存储如此大数字的本机 cpp 数据类型,所以我改为直接打印值:
cout << setprecision(0) << fixed << (8*pow(2,n)-3) << "\n";
我该怎么做才能打印正确的值?我可以做不同的吗?