Талабаларга эслатма: Дарсга кеч қолмаслик


Факториал ва даража рекурсив ф-ялари


Download 261 Kb.
bet2/3
Sana11.05.2023
Hajmi261 Kb.
#1451008
1   2   3
Bog'liq
15.Rekursiv funksiya

Факториал ва даража рекурсив ф-ялари
  • double Daraja(double x, int n)
  • {
  • if (!n) return 1;
  • else return x * Daraja(x, n - 1);
  • }
  • Факториал функцияси
  • Ҳақиқий сонни даражасини ҳисоблаш ф-яси
  • #include
  • using namespace std;
  • long int Faktorial(int n)
  • {
  • if (!n) return 1;
  • else return n * Faktorial (n - 1);
  • }
  • int main()
  • { int n;
  • cin>>n;
  • for(int i=1; i<=n; i++)
  • cout<
  • return 0;
  • }
  • #include
  • using namespace std;
  • double Daraja(double x, int n)
  • {
  • if (!n) return 1;
  • else return x * Daraja(x, n - 1);
  • }
  • int main()
  • { int n;
  • double x;
  • cout<<"Sonni kirit";
  • cin>>x;
  • cout<<"Darajani kirit";
  • cin>>n;
  • cout<
  • return 0;
  • }
  • Масала. Учта А, В, С қозиқ ва n та ҳар хил ўлчамли халқалар берилган. Халқаларни ўлчамлари ўсиш тартибида 1 дан n гача тартибланган. А қозиқдаги барча халқаларни В қозиққа, ёрдамчи С қозиқдан фойдаланган ҳолда ўтказинг. Халқаларни биттадан кўчириш керак ва катта ўлчамли халқани кичик ўлчамли халқа устига қўйиш мумкин эмас.
  • int Hanoy (int n, char a = 'A', char b = 'B', char c = 'C' )
  • {
  • if (n)
  • {
  • Hanoy(n - 1, a, c, b);
  • cout << "Xalqa " << a << " dan " << b << " ga o'tkazilsin\n";
  • Hanoy (n - 1, c, b, a);
  • }
  • }
  • int main()
  • {
  • int Xalqalar_soni;
  • cout << "Hanoy minorasi masalasi" << endl;
  • cout << "Xalqalar sonini kiriting: ";
  • cin>> Xalqalar_soni;
  • Hanoy(Xalqalar_soni);
  • return 0;}
  • Ханой минораси дастури
  • Xalqalar sonini kiriting: 3 ta
  • Xalqa A dan B ga o'tkazilsin
  • Xalqa A dan C ga o'tkazilsin
  • Xalqa B dan C ga o'tkazilsin
  • Xalqa A dan B ga o'tkazilsin
  • Xalqa C dan A ga o'tkazilsin
  • Xalqa C dan B ga o'tkazilsin
  • Xalqa A dan B ga o'tkazilsin
  • A
  • B 3 2 1
  • C
  • Xalqalar sonini kiriting: 4 ta
  • Xalqa A dan C ga o'tkazilsin
  • Xalqa A dan B ga o'tkazilsin
  • Xalqa C dan B ga o'tkazilsin
  • Xalqa A dan C ga o'tkazilsin
  • Xalqa B dan A ga o'tkazilsin
  • Xalqa B dan C ga o'tkazilsin
  • Xalqa A dan C ga o'tkazilsin
  • Xalqa A dan B ga o'tkazilsin
  • Xalqa C dan B ga o'tkazilsin
  • Xalqa C dan A ga o'tkazilsin
  • Xalqa B dan A ga o'tkazilsin
  • Xalqa C dan B ga o'tkazilsin
  • Xalqa A dan C ga o'tkazilsin
  • Xalqa A dan B ga o'tkazilsin
  • Xalqa C dan B ga o'tkazilsin
  • Ханой минораси (4 та элемент)
  • ЭКУБ функцияси
  • #include
  • void EKUB(int a, int b)
  • {
  • if (a > b) a= a - b; else b = b - a; // Kattasidan kichigini ayiramiz
  • if (b == 0)
  • {
  • cout << a; return; // Funksiya ishini tugashi
  • }
  • EKUB(a, b); // Funksiya o'zini yangi
  • // parametrlar bilan chaqiradi
  • }
  • int main()
  • {
  • int K, L;
  • cin >> K >> L;
  • EKUB (K, L);
  • getch();
  • return 0;
  • }
  • Рекурсив функция
  • Масала. Рекурсив функциядан фойдаланган ҳолда берилган иккита сондан рақамлари йиғиндиси катта бўлган сонни топинг.
  • int sum ;
  • int raqam(int son)
  • {
  • sum += son % 10;
  • son = son / 10;
  • if (son == 0) return sum;
  • raqam (son);
  • }
  • #include
  • using namespace std;
  • int sum_1, sum_2 ;
  • int raqam (int son)
  • {
  • int sum=0;
  • sum += son % 10;
  • son = son / 10; //321/10
  • if (son == 0) return sum;
  • raqam (son);
  • }
  • int main()
  • {
  • int sum_1 = 0, sum_2 = 0;
  • int son_1, son_2;
  • cin>>son_1>>son_2;
  • sum_1 = raqam(son_1);
  • sum_2 = raqam(son_2);
  • if (sum_1 > sum_2) cout << son_1; else cout<
  • return 0;
  • }

Download 261 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling