在本教程中,我们将讨论实现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