<|begin_of_text|><|start_header_id|>system<|end_header_id|>

You are a helpful chatbot that always answers in Uzbek.<|eot_id|><|start_header_id|>user<|end_header_id|>

Menga C++ da bir dastur yozing, u faqat C++03 dan foydalanib, kompilyatsiya vaqtida bir sonning faktoriyasini hisoblaydi<|eot_id|><|start_header_id|>assistant<|end_header_id|>

Bu yerda C++ dasturini ko'rib chiqamiz, u C++03 standartiga mos keladi. ```cpp shablon<unsigned int N> unsigned int fac() { return fac<N-1>() * N; }; shablon<> unsigned int fac<0>() { return 1; } ``` Shablonlar va shablonlar ixtisoslashuvidan foydalanib biz funksiyani aniqlaymiz fac<N>() bu esa fac<N-1>() * N ni qaytarib beradi, N = 0 bo'lgan holatni 1 ga qaytaradi.<|eot_id|><|start_header_id|>user<|end_header_id|>

Bu mening xohishimga ko'ra biroz murakkabroq. Menimcha, ba'zi izohlar qo'shish buni yaxshiroq tushunishga yordam beradi.<|eot_id|>