title: Rekurrent qatorlar - Информатика
text: 256
  Masalan, n! (faktorial ) ya`ni n gacha sonlar ko`paytmasini qo`yidagi rekurrent
  formula yordamida hisoblash mumkin:
  S0=1, Sn=Sn-1*n
  Bu formulaga asoslangan dasturning asosiy qismi qo`yidagicha yoziladi:
  For(int s=1,i=1;i<=n;i++) s*=i;
  Rekurrent qatorga yana bir misol Fibonachchi sonlari qatori bo`lib, bu qator
  quyidagi rekurrent formulalar asosida ifodalanadi:
  S0=1, S1=1,Sn=Sn-1+ Sn-2
  Berilgan n gacha bo`lgan Fibonachchi sonlarini hisoblash dasturi:
  29-listing
  .
  Output:
  …
  { int n,S=0;
  while (1)
  { cin >> n;
  if (n>2) break;
  cout<<(" n qiymati noto`g`ri kiritilgan"); };
  for(int S0=1,S1=1,i=3;i<=n;i++)
  { S=S0+S1; S0=S1; S1=S; cout<<("\n ",i,S);};}
  Cheksiz qatorlar
  . Matematikada odatda biror
  qiymatni hisoblash shu
  miqdorga cheksiz yaqinlashuvchi qator hadlarini hisoblashga olib keladi. Amalda
  cheksiz qator hadlarini hisoblash yaqinlashish sharti bajarilguncha davom etadi va
  bu shartga mos keluvchi qator hadi izlanayotgan miqdorning taqribiy qiymati deb
  olinadi. Odatda yaqinlashish sharti sifatida shart qabul qilinadi. Bu yerda eps
  oldindan berilgan son. Qator hadlarini rekurrent formulalar
  yordamida ifodalash
  dasturlashni ancha yengillashtiradi. Matematikada ? sonini ?/4=1-1/2!+1/3!-
  1/4!+…+(-1)(i+1)*1/i!+... cheksiz qator yordamida hisoblash mumkinligi
  isbotlangan. Bu qatorni quyidagi rekurrent formulalar yordamida ifodalash
  mumkindir:
  R1=1.0, S1=1.0,Ri=-ri-1*(1/i), Si=Si-1+Ri;
  257
  Bu masalani yechishning while operatori yordamida tuzilgan dasturini ko`rib
  chiqamiz:
  30-listing
  .
  Output:
  #include
  { double eps;
  cout<<(“\n eps=”); cin>>(“%f”,&eps);
  int i=2;
  double r=1.0;
  double s=1.0;
  while((r>eps)||(r<-eps));
  { s+=r;
  r =- r*(1/i);
  i++;}
  cout<<(“pi=%f”,s*4); }
  Shu masalaning do while operatori yordamida tuzilgan dasturi:
  31-listing
  .
  Output:
  #include
  { double eps;
  cout<<(“\n eps=”); cin>>(“%f”,&eps);
  int i=1;
  double r=1.0;
  double s=0.0;
  do
  { s+=r;
  r=-r*(1/i);
  i++;}
  while((r=>eps)||(r<=-eps));
  cout<<(“pi=%f”,s*4);}
  258
  Shunga e`tibor
  berish kerakki, tekshirish takrorlash tanasi bajarilgandan
  so`ng amalga oshirilgani uchun kichik yoki teng sharti qo`yilgandir.
  Shu masalani for operatori yordamida tuzilgan dasturi:
  32-listing
  .
  Output:
  #include
  { double eps;
  cout<<(“\n eps=”); cin>>(“%f”,&eps);
  for(int i=1, double r=1.0,double s=1.0; ((r>eps)||(r<-eps));i++)
  { r=-r*(1/i);s+=r};
  cout<<(“pi=%f”,s*4);}