求助

B2144 阿克曼(Ackermann)函数

你没声明akm函数,而且不能给一个函数赋值
by jhdrgfj @ 2023-01-17 17:51:37


@[customr](/user/919235) 我觉得您可以回去好好学学语法知识。
by Castaways @ 2023-01-17 17:57:06


@[customr](/user/919235) 函数没声明怎么调用,要把函数在 $main()$ 函数前声明 @[jhdrgfj](/user/776582) `x=fun(m,n);`没有问题呀,这不是给函数赋值,而是把 $x$ 赋值为 $fun(m,n)$ 的返回值
by VictoriaEVA @ 2023-01-25 21:57:07


@[customr](/user/919235) 缩进也应该注意一下,在编译器里设置一下格式化就行了. 还有 $main()$ 函数不要忘了 `return 0;` ,虽然平时没关系,**但可能导致比赛时爆0** 再把你的代码修改后放上来 ```cpp #include <bits/stdc++.h> using namespace std; int m,n; int fun(m,n); int main() { cin>>m>>n; int x; x=fun(m,n); cout<<x; return 0; } int fun(m,n) { if(m>0&&n==0) akm(m,n)=akm(m-1,1); else if(m>0&&n>0) akm(m,n)=akm(m-1,akm(m,n-1)); else if(n==0) return n+1; } ``` 或者干脆: ```cpp #include <bits/stdc++.h> using namespace std; int m,n; int fun(m,n) { if(m>0&&n==0) akm(m,n)=akm(m-1,1); else if(m>0&&n>0) akm(m,n)=akm(m-1,akm(m,n-1)); else if(n==0) return n+1; } int main() { cin>>m>>n; int x; x=fun(m,n); cout<<x; return 0; }
by VictoriaEVA @ 2023-01-25 22:06:04


`#include <bits/stdc++.h>` 万能头文件它不香吗
by VictoriaEVA @ 2023-01-25 22:07:44


@[Victoria_wtq](/user/522483) 我是指 ```cpp akm(m,n)=akm(m-1,1); ``` 等语句是错的,这样直接给函数赋值连编译都过不了,而且它的代码除了n=0都没有返回值。
by jhdrgfj @ 2023-01-26 17:14:31


@[jhdrgfj](/user/776582) e,打扰了
by VictoriaEVA @ 2023-01-26 18:15:23


@[jhdrgfj](/user/776582) ```cpp int m,n; int fun(m,n) ``` 应该是 ```cpp int fun(int m,int n) ``` 这是函数定义传参的格式,你上面的 ```cpp int m,n; ``` 是定义的全区变量,而不是调用函数时需要传入的参数。而且外面的全局变量 n,m 会和 fun 函数里面的 n,m 产生冲突,建议放主函数里面。 还有 akm 应该是 fun 吧。 改了的代码: ```cpp #include <bits/stdc++.h> using namespace std; int fun(int m,int n) { if(m==0)return n+1; else if(m>0&&n==0) return fun(m-1,1); else if(m>0&&n>0)return fun(m-1,fun(m,n-1)); } int main() { int m,n; cin>>m>>n; cout<<fun(m,n); return 0; } ```
by GCSG01 @ 2023-08-26 10:35:10


|