#include <iostream>
#include <cstdlib>
using namespace std;
unsigned int idiv_rec(unsigned int a, unsigned int b)
{
if (b == 0) exit(EXIT_FAILURE);
unsigned int l = 0, h = a;
return idiv_rec(a, b, l, h);
}
unsigned int idiv_rec( unsigned a, unsigned b, unsigned &l, unsigned &h) {
unsigned int m = (l + h) / 2;
bool greater = m * b > a;
h = greater ? m : h;
l = greater ? l : m;
if (h - l > 1)
return idiv_rec(a, b, l, h);
else
return l;
}
它说
too many arguments to function 'unsigned int idiv_rec(unsigned int, unsigned int)'
我必须包含一些东西吗?
最佳答案
你遇到的问题是当你到达p>
return idiv_rec(a, b, l, h);
编译器还没有看到
unsigned int idiv_rec( unsigned a, unsigned b, unsigned &l, unsigned &h)
这意味着它不知道函数有 4 个参数版本。这就是为什么即使函数存在也会出现错误的原因。
你需要像这样转发声明
unsigned int idiv_rec( unsigned a, unsigned b, unsigned &l, unsigned &h);
之前
unsigned int idiv_rec(unsigned int a, unsigned int b)
关于c++ - 函数错误的参数太多,即使我有一个参数数量正确的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41620641/