Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反向Collatz序列代码不计算 使用C++,我编写了一个程序,它将从1开始第一个n个数,并输出它们各自的“路径计数”,这就是我所说的从数字到零的CalATZ序列的迭代次数(参见Caltz猜想)。例如,路径号8是3,因为要达到1需要3个步骤(8:2=4;4:2=2;2:2=1)_C++_Collatz - Fatal编程技术网

反向Collatz序列代码不计算 使用C++,我编写了一个程序,它将从1开始第一个n个数,并输出它们各自的“路径计数”,这就是我所说的从数字到零的CalATZ序列的迭代次数(参见Caltz猜想)。例如,路径号8是3,因为要达到1需要3个步骤(8:2=4;4:2=2;2:2=1)

反向Collatz序列代码不计算 使用C++,我编写了一个程序,它将从1开始第一个n个数,并输出它们各自的“路径计数”,这就是我所说的从数字到零的CalATZ序列的迭代次数(参见Caltz猜想)。例如,路径号8是3,因为要达到1需要3个步骤(8:2=4;4:2=2;2:2=1),c++,collatz,C++,Collatz,因此,我们有一个简单的功能: int pathNumber(int n){ int pathCount = 0; while(n > 1){ if(n % 2 == 0){ n /= 2; }else{ n *= 3; n ++; } pathCount ++; } return pathCount; } 然后我决定写一个

因此,我们有一个简单的功能:

int pathNumber(int n){
    int pathCount = 0;
    while(n > 1){
        if(n % 2 == 0){
            n /= 2;
        }else{
            n *= 3;
            n ++;
        }
        pathCount ++;
    }
    return pathCount;
}
然后我决定写一个反函数(称为firstInstanceOf(n)),它将从1开始按升序计算任何给定路径号的第一个实例。例如,firstInstanceOf(3)将是8,因为8是从1开始按升序排列的第一个数字,其路径计数为3。我编写的函数如下:

int firstInstanceOf(int s){
    int i = 0;
    while(pathNumber(i) != s){
        i ++;
    }
    return i;
}

其中s是输入值,i是每次递增1的变量。看起来很简单,代码编译时没有任何警告,但根本不会计算。我曾尝试将后一个函数重新格式化为for循环、infinity循环等,但该程序仍然坚持无限缓冲或输出虚假值。我觉得我错过了一些很明显的东西?感谢您的帮助。

那个“路径号”的代码完全被破坏了。它没有考虑到序列的值可能会越来越大并溢出。因此,在非常有趣的情况下,它不会显示正确的结果。实际上,没有必要为此编写代码,因为路径长度为n的最小整数总是2^n。@gnasher729我临时将其从“long”改为“int”,以查看是否是数据类型不兼容导致了问题“实际上没有必要为此编写代码,因为路径长度为n的最小整数总是2^n。”不一定。例如,firstInstanceOf(14)是11,而不是2^14。