【发布时间】:2015-05-28 16:40:05
【问题描述】:
我正在努力了解有关 Ackermann 函数、递归时间和一般函数学的更多信息,但是,我的代码无法编译。我感觉这与 acktgen() 中的数组有关,但我不是 100% 确定。
#include <stdlib.h>
#include <iostream>
using namespace std;
int ack(int m, int n){
if(m==0) return n+1;
else if (n==0) return ack(m,1);
else return ack(m-1,ack(m,n-1));
}
int acktgen(const int s, const int t){
int acktable[s+1][t+1];
for (int i = 1 ; i= t+1; ++i){ //column labels
acktable[0][i]= i-1 ;
}
for (int i = 1 ; i= s+1; ++i){ //row labels
acktable[i][0]= i-1 ;
}
for (int i = 1; i<=s+1; ++i){
for (int j = 1; j<=t+1; ++j){
acktable[i][j]= ack(i-1,j-1);
}
}
return(acktable);
}
int main(){
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
cout<<acktgen(4,4)[i][j]<< "\t";
}
}
}
我知道这不是最有效的阿克曼算法,但我只是将其用作示例。
编译器错误:
prog.cpp: In function 'int acktgen(int, int)':
prog.cpp:26:17: error: invalid conversion from 'int (*)[(t + 1)]' to 'int' [-fpermissive]
return(acktable);
^
prog.cpp:14:6: warning: address of local variable 'acktable' returned [-Wreturn-local-addr]
int acktable[s+1][t+1];
^
prog.cpp: In function 'int main()':
prog.cpp:32:24: error: invalid types 'int[int]' for array subscript
cout<<acktgen(4,4)[i][j]<< "\t";
^
【问题讨论】:
-
请发布编译器错误。
-
完成了。我知道我忘了做某事。
-
顺便说一句,您使用的是什么编译器?我得到的错误是:ideone.com/sZ4OMF 这些错误是我所期望的。
-
我正在使用 IDEONE C++14。 ideone.com/4CglyM
-
那些编译器错误与发布的代码无关。
标签: c++ function multidimensional-array ackermann