实施Collat​​z猜想的C ++程序

在本教程中,我们将讨论实现Collatz猜想的程序。

为此,我们将得到一个数字n,我们必须找出是否可以使用两个操作将其转换为1-

  • 如果n为偶数,则n转换为n / 2。

  • 如果n为奇数,则将n转换为3 * n + 1。

示例

#include<bits/stdc++.h>
using namespace std;
//检查n是否达到1-
bool check1(int n, unordered_set<int> &s){
   if (n == 1)
      return true;
   if (s.find(n) != s.end())
      return false;
   return (n % 2)? check1(3*n + 1, s) :
      check1(n/2, s);
}
bool if_one(int n){
   unordered_set<int> s;
   return check1(n, s);
}
int main(){
   int n = 234;
   if_one(n) ? cout << "Yes" : cout <<"No";
   return 0;
}

输出结果

Yes