Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ kiểm tra suy đoán Collatz

Suy đoán Collatz: Với số n dương, lặp: nếu chẵn → n/2, nếu lẻ → 3n+1. Suy đoán khẳng định dãy luôn về 1. Kiểm tra bằng đệ quy + set lưu các giá trị đã gặp để phát hiện vòng lặp.

Ví dụ

#include <bits/stdc++.h>
using namespace std;

bool check1(int n, unordered_set<int> &s) {
    if (n == 1) return true;
    if (s.find(n) != s.end()) return false;
    s.insert(n);
    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;
}

Kết quả

Yes