0

编码

int cycle_length(int i, int j) {
    int cycleLength = 0;
    for (int k = i; k <= j; k++) {
        cout << algorithm(k) << endl;
        if (algorithm(k) > cycle_length) {
            cycleLength = algorithm(k);
        }
    }
    return cycleLength;
}

ISO C++ forbids comparison between pointer and integer [-fpermissive]

我在这一行得到了这个错误if ( algorithm(k) > cycle_length)

但是,相同的代码如何在main()?? 这个错误是什么意思???

添加 的算法是一个接受整数输入并返回整数的函数。

int algorithm(int number1) {
    int counter = 1, number = number1;
    do {
        if (number % 2 == 0) {
            number = number / 2;
            counter++;
        } else {
            number = (3 * number) + 1;
            counter++;
        }
    } while (number != 1);

    return counter;
}
4

1 回答 1

9

您将函数的名称与几乎相同名称的局部变量混淆:

int cycle_length(int i, int j)
{
    int cycleLength

您的函数被调用cycle_length,您的变量被调用cycleLength- 但您正在cycle_length进一步使用。

错误信息有点奇怪,因为编译器没有做“比较变量名和函数名,看看是否有相似的,然后建议你可能只是输入错误”——它只是说“嗯,你是将函数指针 [从函数名称中得到的] 与整数进行比较,这不成立!”

于 2013-01-29T17:57:09.067 回答